Java开发从入门到精通(一):JavaJava的基础语法知识高阶

Java大数据开发和安全开发

  • (一)Java的数组
    • 1.1 静态初始化数组
      • 1.1.1 静态数组的定义
      • 1.1.2 数组的原理
      • 1.1.3 数组的访问
        • 1.1.3.1 数组的取值
        • 1.1.3.2 数组的赋值
        • 1.1.3.3 数组的长度
        • 1.1.3.4 数组的使用
      • 1.1.4 数组的遍历
      • 1.1.3 数组的案例
    • 1.2 动态初始化数组
      • 1.2.1 动态初始化数组的定义
      • 1.2.1 数组的案例
    • 1.3 数组的执行原理,Java程序的执行原理

(一)Java的数组

  • 数组就是一个容器,用来存储一批同种类型的数据
    在这里插入图片描述

有变量,为什么还用数组?

  • 下面是一个随机点名的系统

在这里插入图片描述
假设用变量解决随机点名的需求:

  • 代码繁琐:大量变量的定义。 实现需求繁琐。

在这里插入图片描述
假设用数组解决随机点名的需求:

  • 代码简洁。 逻辑清晰。

在这里插入图片描述

结论:遇到批量数据的存储和操作时,数组比变量更适合

1.1 静态初始化数组

1.1.1 静态数组的定义

  • 定义数组的时候直接给数组赋值

静态初始化数组的格式:

在这里插入图片描述
在这里插入图片描述
注意

  • “数据类型 [ ] 数组名”也可写成“数据类型 数组名[ ]”
  • 什么类型的数组只能存放什么类型的数据。
public class ArrayDemo {public static void main(String[] args) {// 目标:掌握数组的定义方式一:静态初始化数组。// 1、数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,.....}int[] ages =new int[]{12,24,36};double[] scores =new double[]{89.9,99.5,59.5,88};// 2、简化写法:// 数据类型[] 数组名 = {元素1,元素2,元素3,.....}int[] ages2 ={12,24,36};double[] scores2 = {89.9,99.5,59.5,88};// 3、数据类型[] 数组名 也可以写成 数据类型 数组名[] int ages3[] ={12,24,36};   //不推荐double scores3[]  = {89.9,99.5,59.5,88};}
}

1.1.2 数组的原理

声明一个数组,首先是在内存中分出一块盒子,盒子内部分成两个区域,一个区域保存数组变量,一个区域保存数组的值,数组的值又分成三部分,每个部分独立存储一个数据,每个数据都有自己的下标被用来提供访问,数组的值在内存中以地址的形式被记录,变量中保存的也是数组的内存地址,访问数组的变量就会指向这个内存地址,从而找到数组的值,这也叫传值引用
在这里插入图片描述
验证数组变量的值的指向:

public class ArrayDemo {public static void main(String[] args) {// 目标:掌握数组的定义方式一:静态初始化数组。// 1、数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,.....}int[] ages =new int[]{12,24,36};double[] scores =new double[]{89.9,99.5,59.5,88};System.out.println(ages);System.out.println(scores);}
}
[I@4554617c  //指向内存地址 
[D@74a14482

注意:数组变量名中存储的是数组在内存中的地址,数组是一种引用数据类型

1.1.3 数组的访问

数组的访问

  • 数组名 [索引]
1.1.3.1 数组的取值
/1 取值
System.out.println(arr[0]);//12
1.1.3.2 数组的赋值
// 赋值
arr[2]= 100;
System.out.println(arr[2]);//100
1.1.3.3 数组的长度

数组的长度属性:length

//获取数组的长度(就是数组元素的个数)
System.out.println(arr.length); //3// 3、访问数组的元素个数:数组名.length
System.out.println(arr1.length);
// 技巧:获取数组的最大索引:arr.length-1(前提是数组中存在数据)
System.out.println(arr1.length-1);
int[] arr2 = {};  //并不是所有数组的长度都是length-1
System.out.println(arr2.length-1);
1.1.3.4 数组的使用
public class ArrayDemo1 {public static void main(String[] args) {//1 访问数组中的值int[] arr1 = {12, 25, 63, 45};System.out.println(arr1[0]);System.out.println(arr1[1]);System.out.println(arr1[2]);System.out.println(arr1[3]);//2 修改数组中的值System.out.println(arr1[0]=21);System.out.println(arr1[1]=22);System.out.println(arr1[2]=23);System.out.println(arr1[3]=24);}
}

1.1.4 数组的遍历

  • 遍历:就是一个一个数据的访问
public class ArrayDemo1 {public static void main(String[] args) {//1 访问数组中的值int[] arr1 = {12, 25, 63, 45};System.out.println(arr1[0]);System.out.println(arr1[1]);System.out.println(arr1[2]);System.out.println(arr1[3]);for (int i = 0; i < arr1.length;i++){System.out.println(arr1[i]); //访问}//2 修改数组中的值System.out.println(arr1[0]=21);System.out.println(arr1[1]=22);System.out.println(arr1[2]=23);System.out.println(arr1[3]=24);for (int i = 0; i < arr1.length;i++){arr1[i] =i+1;  //赋值System.out.println(arr1[i]);}// 3、访问数组的元素个数:数组名.lengthSystem.out.println(arr1.length);// 技巧:获取数组的最大索引:arr.length-1(前提是数组中存在数据)System.out.println(arr1.length-1);int[] arr2 = {};  //并不是所有数组的长度都是length-1System.out.println(arr2.length-1);}
}

为什么要遍历数组?

  • 求和 元素搜索 找最大值、最小值

1.1.3 数组的案例

在这里插入图片描述

public class ArrayDemo2 {public static void main(String[] args) {// 目标:完成对数组的元素求和。// 1.定义一个数组存储5名员工的销售额int[] arr1 = {16,26,36,6,100};//3、定义一个变量用于累加求和int sum = 0;//2、遍历这个数组中的每个数据。for (int i=0;i<arr1.length;i++){sum += arr1[i];}System.out.println("员工的销售总额:" + sum);}
}

1.2 动态初始化数组

1.2.1 动态初始化数组的定义

  • 定义数组时先不存入具体的元素值,只确定数组存储的数据类型和数组的长度
  • 静态初始化和动态初始化数组的写法是独立的,不可以混用

数组的动态初始化格式:
在这里插入图片描述

import java.util.Random;public class ArrayDemo3 {public static void main(String[] args) {// 目标:掌握定义数组的方式二:动态初始化数组。// 1、数据类型[]数组名=new 数据类型[长度]int[] ages =new int[3];  //ages =[0,0,0]System.out.println(ages[0]);System.out.println(ages[1]);System.out.println(ages[2]);ages[0]= 12;ages[1]= 18;ages[2]= 32;System.out.println(ages[0]);System.out.println(ages[1]);System.out.println(ages[2]);// 2、动态数组循环赋值 数据类型[]数组名=new 数据类型[长度]int[] arr1 = new int[10];for (int i=0; i<10;i++){Random r = new Random();int num = r.nextInt(10);arr1[i] = num;}System.out.println(arr1.length);}
}

动态初始化数组元素默认值规则:
在这里插入图片描述
在这里插入图片描述

public class ArrayDemo3 {public static void main(String[] args) {     int[] age1 =new int[3];  //age1 =[0,0,0]System.out.println(age1[0]);System.out.println(age1[1]);System.out.println(age1[2]);char[]chars = new char[3];// [0,0,0]System.out.println((int)chars[0]);System.out.println((int)chars[2]);double[] scores = new double[80];// [0.0, 0.0]System.out.println(scores[0]);System.out.println(scores[79]);boolean[] flags = new boolean[100]; // [false, false]System.out.println(flags[0]);System.out.println(flags[99]);String[] names = new String[80];// [null, null]System.out.println(names[0]);System.out.println(names[79]);}
}

两种数组定义的方法各自适合什么业务场景?

  • 动态初始化:适合开始不确定具体元素值,只知道元素个数的业务场景
  • 静态初始化:适合一开始就知道要存入哪些元素值的业务场景

1.2.1 数组的案例

在这里插入图片描述

import java.util.Scanner;public class ArrayDemo4 {public static void main(String[] args) {// 目标:完成评委打分的案例。// 1、定义一个动态初始化的数组,负责后期存储6个评委的打分。double[] scores = new double[6];System.out.println(scores.length);double sum =0;Scanner sc = new Scanner(System.in);// 2、遍历数组中的每个位置,录入评委的分数,存入到数组中去for (int i=0;i<scores.length;i++){System.out.println("请输入第" +(i+1)+"位裁判的评分");double num = sc.nextDouble();scores[i] = num;}//3、遍历数组中的每个元素进行求和for (int j=0; j < scores.length;j++){sum += scores[j];}System.out.println("选手的平均分为" + sum / scores.length);}
}

1.3 数组的执行原理,Java程序的执行原理

  • java程序在编译后会产生一个class文件

在这里插入图片描述

  • Java程序运行时会把class文件放到内存中的JVM虚拟机中执行

在这里插入图片描述

  • Java为了便于虚拟机运行class文件,将虚拟机中的内存区域进行了划分,划分成了方法区、栈、堆,本地方法栈、程序计数器

在这里插入图片描述

在这里插入代码片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/730911.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WanAndroid(鸿蒙版)开发的第一篇

前言 DevEco Studio版本&#xff1a;4.0.0.600 WanAndroid的API链接&#xff1a;玩Android 开放API-玩Android - wanandroid.com 为了兼容HarmonyOS&#xff0c;我这边以Arkts--API9为例进行实现 通过华为官网渠道目前下载的版本还是3.1的&#xff0c;这边提供下4.0版本下载…

从2个角度来简单讨论一下伦敦金走势图怎么看

进入伦敦金市场之后&#xff0c;投资者无时无刻都在思考着一个问题&#xff0c;那就是伦敦金走势怎么看&#xff1f;关于这个问题&#xff0c;其实在市场中有很多的文章和视频去介绍&#xff0c;在书店里也有很多投资前贤所写的书籍讨论过这个问题。但是他们都有一个特征&#…

【SpringMVC】快速体验 SpringMVC接收数据 第一期

文章目录 一、SpringMVC 介绍1.1 主要作用1.2 核心组件和调用流程理解 二、快速体验三、SpringMVC接收数据3.1 访问路径设置3.1.1 精准路径匹配3.1.2 模糊路径匹配3.1.3 类和方法级别区别3.1.4 附带请求方式限制3.1.5 进阶注解 与 常见配置问题 3.2 接收参数&#xff08;重点&a…

复杂业务场景下,如何优雅的使用设计模式来优化代码?

1、引言 本文以一个实际案例来介绍在解决业务需求的路上&#xff0c;如何通过常用的设计模式来逐级优化我们的代码&#xff0c;以把我们所了解的到设计模式真实的应用于实战。 2、背景 假定我们现在有一个订单流程管理系统&#xff0c;这个系统对于用户发起的一笔订单&#…

HNU-算法设计与分析-甘晴void学习感悟

前言 算法设计与分析&#xff0c;仅就课程而言&#xff0c;似乎是数据结构与算法分析的延续 教材使用&#xff1a; 课程 关于课程&#xff0c;橙学长讲的非常清晰&#xff0c;我深以为然。 HNUCS-大三课程概览-CSDN博客文章浏览阅读1.3k次&#xff0c;点赞5次&#xff0c;收…

安装nginx:手动安装和yum安装

本文在centos7.9下分别尝试了yum安装和手动安装&#xff0c;记录一下试验过程。为后来者少踩点坑。 下载 下载地址&#xff1a;链接 。建议下载稳定版本&#xff0c;也就是Stable Version&#xff0c;这里下载的是 nginx-1.24.0 # 我下载在如下文件夹 mkdir/opt/apps cd /op…

ES入门五:组合查询

带有组合功能的Api有以下几个&#xff1a; Bool Query&#xff1a;布尔查询&#xff0c;可以组合多个过滤语句来过滤文档Boosting Query&#xff1a;在postive块中指定匹配文档的语句&#xff0c;同时降低在negative块中也匹配的文档的得分&#xff0c;提供调整相关性算法的能…

代码随想录 回溯算法-排序

目录 46.全排序 47.全排列|| 332.重新安排行程 46.全排序 46. 全排列 中等 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[1,2,3],[1,…

蓝桥杯每日一题:烤鸡dfs

这道题考察了dfs的应用&#xff0c;题干十分有趣&#xff0c;思考过程对以后类似题目也有很强的参考性&#xff0c;一起来学习吧&#xff01; 题目&#xff1a; # 烤鸡 ## 题目背景 猪猪 Hanke 得到了一只鸡。 ## 题目描述 猪猪 Hanke 特别喜欢吃烤鸡&#xff08;本是同畜…

蓝桥杯练习题——归并排序

1.火柴排队 思路 1.求最小值的时候&#xff0c;可以直接按升序排序&#xff0c;这样得到的值就是最小值 2.求最小交换次数的时候&#xff0c;不能直接排序&#xff0c;因为只能交换相邻的数&#xff0c;只需要知道他们的相对大小&#xff0c;所以可以先用离散化&#xff0c;把…

清华大学1748页CTF竞赛入门指南,完整版开放下载!

CTF是一种针对信息安全领域的经济性挑战&#xff0c;旨在通过解决一系列的难题来寻找隐藏的“flag”。CTF比赛战队一般是以高校、科研单位、企业、信息安全从业者或社会团体组成。对于网安爱好者及从业者来说&#xff0c;拥有“CTF参赛经验”也是求职中的加分项。 前几天分享的…

什么是智慧公厕?智慧公厕设备有哪些

在现代社会&#xff0c;公共厕所作为城市基础设施的重要一环&#xff0c;承载着城市卫生、居民生活品质的重要责任。然而&#xff0c;传统公厕存在的问题仍然不可忽视&#xff1a;脏乱差、资源浪费、安全隐患等等。 为了解决这些问题&#xff0c;针对公共厕所日常使用、运营管…

六、长短时记忆网络语言模型(LSTM)

为了解决深度神经网络中的梯度消失问题&#xff0c;提出了一种特殊的RNN模型——长短期记忆网络&#xff08;Long Short-Term Memory networks, LSTM&#xff09;&#xff0c;能够有效的传递和表达长时间序列中的信息并且不会导致长时间前的有用信息被忽略。 长短时记忆网络原理…

ORA/GSA -- 学习记录

brief over-representation analysis(ORA),过表“达”分析&#xff0c;就是我们做多分组的RNAseq数据解析后会得到一些差异表达的gene&#xff0c;有些时候是单独拿出一个差异gene去解释表型&#xff0c;缺点是欠缺证据力度。有些人就把一些相关的差异gene放在一块儿解释&…

网络编程---网络编程入门、UDP通信程序、TCP通信程序

1.网络编程入门 1.网络编程概述 网络编程&#xff1a; 在网络通信协议下&#xff0c;实现网络互连的不同计算机上运行的程序间可以进行数据传输 计算机网络&#xff1a; 是指将地理位置不同的具有独立功能的多台计算机及其外部设备&#xff0c;通过通信线路连接起来&#…

J1周-ResNet-50算法

本文为&#x1f517;365天深度学习训练营 中的学习记录博客 原作者&#xff1a;K同学啊|接辅导、项目定制 我的环境&#xff1a; 1.语言&#xff1a;python3.7 2.编译器&#xff1a;pycharm 3.深度学习框架Tensorflow/Pytorch 1.8.0cu111 一、问题引出 CNN能够提取低、中、…

qnx启动中控屏黑屏

bmetrics_service boot metrics service, 用于记录统计启动性能信息,读取/dev/bmetrics可以获取到这些信息 # use memorydump memorydump Sets the debug cookies, copies MMU info into reset_info asinfo, sets the secure monitor(TZ) dump buffer, starts tracelogger Usa…

VR全景技术在VR看房中有哪些应用,能带来哪些好处

引言&#xff1a; 随着科技的不断发展&#xff0c;虚拟现实&#xff08;VR&#xff09;技术在房地产行业中的应用也越来越广泛。其中&#xff0c;VR全景技术在VR看房中的运用尤为突出。今天&#xff0c;让我们一起深入探讨VR全景技术在VR看房中的应用及其带来的种种好处。 一、…

ES入门二:文档的基本操作

索引管理 创建索引 删除索引 文档管理 创建文档 如果有更新需求&#xff0c;使用第一种如果有唯一性校验&#xff0c;使用第二种如果需要系统给你创建文档Id&#xff0c;使用第三种 &#xff08;这个性能更好&#xff09; 相比第一种&#xff0c;第三种的写入效率更高&#xf…

基础GamePlay知识-碰撞检测

将会持续更新gameplay的一些基础知识&#xff0c;一同学习。 扇形检测 扇形检测是Gameplay里面很常见的场景。比如荒野乱斗中&#xff0c;大部分的近战角色都是扇形攻击。在扇形范围内就认为是受击。 扇形检测只有两个参数&#xff0c;一个是扇形的角度一个是扇形的半径大小。…