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

news/2024/5/15 1:05:21

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.cpky.cn/p/10241.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

掼蛋的牌型与规律(上篇)

掼蛋是一项配合类的棋牌竞技游戏&#xff0c;掼蛋的最大魅力以及最集中的特点在于变化&#xff0c;在于组牌的变数。有的掼蛋新手往往先把牌配死&#xff0c;并且直接决定好出牌计划&#xff0c;然后守株待兔。掼蛋的取胜之道在于静态组合加上动态变化。本文主要介绍一下掼蛋的…

登录页面校验使用会话跟踪,和filter和interceptor

一、会话跟踪 在一个浏览器的会话保持期间&#xff0c;可以多次请求和响应数据&#xff0c;但因为http协议是无状态的&#xff0c;每一次的请求或响应都是一次新的操作&#xff0c;所以必须识别哪些请求来自同一个浏览器&#xff0c;以便共享资源数据 比如登录一次后&#xf…

JMeter VS RunnerGo :两大主流性能测试工具对比

说起JMeter&#xff0c;估计很多测试人员都耳熟能详。它小巧、开源&#xff0c;还能支持多种协议的接口和性能测试&#xff0c;所以在测试圈儿里很受欢迎&#xff0c;也是测试人员常用的工具&#xff0c;不少企业也基于JMeter建立起自己的自动化测试能力&#xff0c;提升工作效…

获取别人店铺的所有商品API接口

使用淘宝淘口令接口的步骤通常包括&#xff1a; 注册成为淘宝开放平台的开发者&#xff1a;在淘宝开放平台网站上注册账号并完成认证。 创建应用以获取API密钥&#xff1a;在您的开发者控制台中创建一个应用&#xff0c;并获取用于API调用的密钥&#xff0c;如Client ID和Clie…

【Selenium2+python】自动化unittest生成测试报告

前言 批量执行完用例后&#xff0c;生成的测试报告是文本形式的&#xff0c;不够直观&#xff0c;为了更好的展示测试报告&#xff0c;最好是生成HTML格式的。 unittest里面是不能生成html格式报告的&#xff0c;需要导入一个第三方的模块&#xff1a;HTMLTestRunner 一、导…

RT-thread学习持续更新中(2)

改变系统时钟。 改成外部高速时钟&#xff08;HSE&#xff09;&#xff0c;并且外部高速时钟的时钟频率是8Mhz 添加FinSH 然后连接硬件&#xff0c;编译下载&#xff0c;在串口终端按下Tab键&#xff0c;即可查看系统中的命令。 串口调试终端使用secureSRT&#xff0c;打开以后…