当前位置: 首页 > news >正文

Java学习 (二)关键字、标识符、数组

一、关键字

我们第一章案例中有很多关键字,比如class、public、static、void等,这些关键字依旧被java定义好了,可以拿来用,不需要死记硬背,按照官方文档查询即可

#官方文档
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
常用关键字

二、标识符

  上面的关键字的定义好的,那么标识符就是我们自定义的,通常来说我们称之为变量

比如说我们在定义class类的时候,是不是都是随便起名 比如class  xxx  这个就是变量(标识符)  但是标识符的定义需要遵循一定的命名规则,如下

1、 标识符命名规则

由26个英文字母大小写  0-9   下划线_   或者$ 组成
不可以数字开头
不可以使用关键字,但是能包含关键字
java中严格区分大小写,长度无限制
标识符不能包含空格

2、标识符命名格式

数据类型  变量名  = 变量值

案例

char gender  变量初始化  #java语言必须要先定于变量名,才能使用
gender = ‘男’  变量赋值

3、基本数据类型

整型  byte  short  int long
浮点型 float  double
字符型 chart
布尔型   boolean
#引用数据类型,现在不用了解类  class
数组 array
接口  interface
枚举   enum
注解  annotation
记录   record
1、整型的数据范围

计算机存储单位

2、浮点类型范围

浮点数  不适合在精确小数点的环境,比如银行,舍弃的小数点也是很多钱

BigDecimal 来替换浮点

3、字符型

4、布尔值

4、运算符规则

当容量小的数据类型和容量大的数据类型做运算时,结果自动转换为容量大的数据类型

案例

int i1 = 10
long l1 = i1
float f1 = l1
double d1 = f1

 此时的容量小或者大,不是说内存空间的大小,而是表示数据范围的大小,long(8字节)  float(4字节),int 是4字节可以把数据赋值给long 8字节,float 比long的范围还要大,那么long可以赋值给float

三、数组

数组是多个相同类型数据,按照一定顺序排序的集合,并使用一个名字命名,并通过编号的方式对这些数据统一管理

1、数组定义

案例1 数组定义 初始化值
int num1 = 10;
int num2;
num2 = 20#声明数组
double[] prices;#声明什么new什么 初始化步骤
prices = new double[]{1.1,2.2,3.3} #初始化 并赋值
 案例2
String[] fods;
foods = new String[]{"你好","你好2","你好3"}
案例3
#不指定数组元素 指定长度
String[] foods =  new String[4]; #如果不带花括号,可以直接写数字#表示能存放的大小,后续在添加数组的值

案例1和案例2 是静态,数组变量的初始化与数组元素的操作同时进行
案例3 是动态的  #数组变量的赋值与数组元素赋值操作分开

案例1和案例2定义的值就是数组的长度

小结
数组一旦初始化完成,数组的长度就确定了,并且不可更改静态定义 写花括号里
int[] arr1 = new int[]{1,2,3,4}
动态 写大括号里
int arr[] = new int[4]

2、数组元素调用

1、获取索引位值

int[] arr1 = new int[]{1,2,3,4}#调用
arr1[0]  #从0 开始
arr1[1]
arr1[2]
arr1[3]

2、给索引位赋值

int[] arr1 = new int[4]#赋值
arr1[0] = 555
arr1[0] = 666

3、获取数组长度

int[] arr1 = new int[4]#获取数组容量大小
arr1.length

4、如何遍历数组

int[] arr1 = new int[4]
for (int i = 0; i <= 4; i ++){System.out.println(arr1[i])
}或者
for (int i = 0; i <= prices.length; i ++){System.out.println(arr1[i])
}

5、数组元素默认初始化值

int[] arr1 = new int[4]
System.outprintln(arr1[0])此时默认值是什么整型    0
浮点型 0.0
字符型  0 
字符串   null
布尔类型  false

3、多维数组格式

#定义一维数组
int[] arr1 = new int[]{1,2,3};#定义二维数组 静态
int[][] arr2 = new int[][]{{1,2,3},{4,5,6}};#定义动态二维数组
#可以定义3个子数组(元素)
#每个子数组里面可以放4个元素
String[][] arr3 = new String[3][4]; #动态二维数组2
#将第二个置空
#置空表示没设置上线,写入的时候根据写入的元素决定
String[][] arr3 = new String[3][]; 

关于数组的写法  

int[][] arr5 = 
int[] arr5[] =
int arrt5[][] =这3种写法都是堆的类型推断
#写的时候如果是在一行,并且带有值的时候
#可以把右边的new int[][] 去掉,也是可以的
int[][] arr2 = {{1,2,3},{4,5,6}};

二维数组的调用

int[][] arr2 = {{1,2,3},{4,5,6}};#调用内层元素
arr2[0][0]  #第一个数组的第一个元素
arr2[1][2]  #第二个数组的第三个元素2#我们调用的时候如果不指定内存元素
#只指定第一个数组,那么只会打印数组的内存地址
arr2[1]#如果是普通数据升级为二维数组
arr4[0]   = new int[4]  #给数组添加一个子数组

二维数组的长度

#定义二维数组 静态
int[][] arr2 = new int[][]{{1,2,3},{4,5,6}};arr2.length  是2 因为有2个元素
arr2[0].length  是3 因为数组1有3个元素

如何遍历二维数组

int[][] arr2 = new int[][]{{1,2,3},{4,5,6}};for (int i = 0; i < arr2.length; i++){for (int j = 0; j < arr2[i].length; i++){System.out.println(arr2[i][j])
}

二维数组的默认值

#动态初始化方法1
int[][] arr2 = new int[3][2]#外层元素默认值
System.out.println(arr2[0]) 内存地址值
System.out.println(arr2[0])
#内层元素默认值
System.out.println(arr2[0][]) //0#动态初始化方法2
int[][] arr2 = new int[3][]#外层元素默认值
System.out.println(arr2[0]) //null
#内层元素默认值
System.out.println(arr2[0][]) //报错,空指针,因为光有栈名称,没有堆的具体数

4、数组案例

1、写出一维数组初始化的两种方式

int[] arr = new int[5];//动态初始化String[] arr1 = new String[]{"Tom","Jerry","Jim"};//静态初始化//数组一旦初始化,其长度就是确定的。arr.length
//数组长度一旦确定,就不可修改。

2、写出二维数组初始化的两种方式

相关文章:

  • 【归并排序】| 详解归并排序 力扣912
  • python调用chatgpt
  • 使用npm发布自己的插件包
  • C#.Net筑基-类型系统②常见类型
  • Python中的TXT文档处理:导出与读取
  • Ubuntu22.04之去除文件结尾的^M符号(二百五十三)
  • 使用Kube-Bench对Kubernetes进行安全检测
  • 使用Selenium进行Web自动化:详细操作指南
  • 【PyQt5】python可视化开发:PyQt5介绍,开发环境搭建快速入门
  • YOLOv8中文分类标签显示问题解决
  • Windows桌面运维----第四天
  • 基于Java的高校校园点餐系统
  • c中编程题最有效率的方法算出2乘以8等於几
  • SpringBootWeb 篇-入门了解 Spring Cache 、Spring Task 与 WebSocket 框架
  • FPGA早鸟课程第二弹 | Vivado 设计静态时序分析和实际约束
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • KMP算法及优化
  • Otto开发初探——微服务依赖管理新利器
  • passportjs 源码分析
  • PhantomJS 安装
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • Vue UI框架库开发介绍
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • Vue学习第二天
  • 给github项目添加CI badge
  • 聚簇索引和非聚簇索引
  • 事件委托的小应用
  • 思维导图—你不知道的JavaScript中卷
  • ‌Excel VBA进行间比法设计
  • ()、[]、{}、(())、[[]]命令替换
  • (js)循环条件满足时终止循环
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (汇总)os模块以及shutil模块对文件的操作
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (顺序)容器的好伴侣 --- 容器适配器
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .NET delegate 委托 、 Event 事件,接口回调
  • .Net mvc总结
  • .net 微服务 服务保护 自动重试 Polly
  • .net 中viewstate的原理和使用
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .net和jar包windows服务部署
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • .NET下ASPX编程的几个小问题
  • @SuppressWarnings注解
  • [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2019-6116
  • [3]Opengl ES着色器
  • [Armbian] 部署Docker版Home Assistent,安装HACS并连接米家设备
  • [BT]BUUCTF刷题第9天(3.27)
  • [C#]调用本地摄像头录制视频并保存
  • [C++]——带你学习类和对象
  • [godot] 采用状态机时,如何处理攻击时移动?如“冲撞”
  • [HCIE] IPSec-VPN (手工模式)
  • [I2C]I2C通信协议详解(一) --- 什么是I2C