持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第31天,点击查看活动详情
数据类型
java是一种强类型语言,数据必须明确类型。 基础数据类型有8种,分别是
- 整数类型:
byte,short,int,long, - 浮点类型:
float,double, - 字符类型:
char, - 布尔类型:
boolean。 同时整数类型默认是int,浮点类型默认是double。
定义
在数据定义的过程中,只有两个需要特别注意,分别是整数类型的long和浮点类型的float
// 其他如byte, short, int只要正常定义就可以了, 比如
byte a = 1
short b = 2
int c = 3
// 但是如果定义long和float,需要后边加字符
long a1 = 100L
float a2 = 10.1F
注意:
- 定义long类型变量的时候,需要在数值后面加入L标识符,L可以大写也可以小写
- 定义float类型变量的时候,需要在数值后面加入F的标识,F可以大写也可以小写
标识符的组成规则
- 由字母、数字、下划线“_”、美元符号“$”组成,第一个字符不能是数字。
- 不能使用java中的关键字作为标识符。
- 命名中大驼峰用于定义类名,小驼峰用于定义方法以及变量
类型转换
在代码书写过程中,经常能看到定义int,int是在整数类型中最常用的类型,一般都能满足,这里注意一点 在byte,short,char三种数据在运算过程中都是先提升为int,再进行计算的。 数据转换的过程中,有两种,分别是
- 隐式类型转换:取值范围小的可以直接赋值给取值范围大的数据类型。
- 强制类型转换:取值大的赋值给取值小的数据类型。
// 隐式转换
byte a = 10
int b = a
//强制类型转换
int b = 10
byte a =(byte)b
int c = 1
byte d = (byte)(b+c)
运算符
+, -, * ,/ ,%,加减乘除取余没什么可说的。这里说下++,--的位置。
- 如果++在前,那么当前数据就先加后用
int a = 1;
System.out.println(++a); // 2
- 如果++在后,那么就先用,再加
int a = 1;
System.out.println(a++); // 1
System.out.println(a); // 2
- +=,-=, *=, /=,也没有什么说的,唯一一点就是该运算符隐含了强制转换
关系运算符 关系运算符也没有什么不同的。唯一注意的是这里没有===,只有==
逻辑运算符 和javascript不同,这里都是单符号,比如与&,或| ,非!,异或^
- ^:a^b,a与b相同为false,不同为true
注意:如果使用了&&或者||,当前条件一旦左边成立,则不在执行右边。
条件语句
if, for,while,switch, do while语法都一致,没有不同之处。注意一点的是,当使用while(true)与switch嵌套使用的时候,想让switch的break直接跳出while,需要给while定义一个名字,直接break 名字。
跳出循环的控制语句: break:跳出当前循环 continue:跳出此次循环
数组
这里数组中要对数据的类型要求一致。 不同的定义方式
// 数据类型 数组 数组名称 = 数组的内存空间 数组类型 数组 数组长度
int[] arr1 = new int[3]; // 动态初始化
int[] arr3 = {1,3,4}; // 静态初始化
int[] arr4 = new int[]{1,2,3}; // 静态初始化
取值方式还是通过索引取值
注意: 在数组的操作中要注意一个是索引越界,一个是空指针异常,索引越界就是当前长度可能为3,现在来找4,那就索引越界。空指针是指定义为null的时候,再来拿值,就空指针异常了。
方法
- public: 访问修饰符
- static: 关键字
- void:返回类型,也可以定义为int之类的,根据返回的参数定义,没有返回则定义为void
- main: 方法名
- String[]: String类
- args: 字符串数组
方法定义不能嵌套,但是可以重载, 重载:
- 多个方法在同一个类中
- 多个方法有相同的方法名
- 多个方法的参数不同或类型不同或数量不同
方法的基础类型传递
基础类型传递,形参的改变不影响实参,方法在栈内存中,都会有独立的栈空间,方法运行结束就会弹栈。
方法的引用类型传递
引用类型的参数,形参的改变会影响实参。引用类型传参是传入了地址值, 因此修改会直接修改到内存中的值,形参改变,实参也改变。