一,数据类型&运算符
数据类型
基本数据类型
整型(整数): byte(字节型) short(短整型) int(整型 最常用的数据类型) long(长整型)
浮点型(小数): float(单精度浮点型) double(双精度浮点型)
字符型(一个字符): char
布尔类型(判断对错): boolean
引用数据类型:除基本类型之外都是引用数据类型
String:比一些基本数据类型还常用的引用数据类型,表示对字符串信息进行处理
整数类型
字节数 | 取值范围 | |
byte 字节型 | 1(8位) | -2 ^ 7 ~ 2 ^ 7 - 1 [-128 ~ 127] |
short 短整型 | 2(16)位 | -2^15-2^15-1[-32759 - 32767] |
int 整型 | 4(32)位 | -2 ^ 31 - 2 ^ 31 - 1 |
long 长整型 | 8(64)位 | -2 ^ 63 - 2 ^ 63 - 1 |
浮点类型(2种)
float | double | |
名称 | 单精度浮点类型 | 双精度浮点类型 |
字节 | 4 | 8 |
精度问题 | 保留小数点后面8位 | 保留小数后面16位 |
布尔类型
boolean类型
只有true和false两个值
但是这个类型经常使用,使用在分支,三目运算符,逻辑运算,比较,for循环中...都有使用
因为我们需要使用判断的场景的时候就需要使用boolean类型进行表示
字符型
二,位运算&Scanner&Random
1,位运算符
&:按位与:如果两个都为1,那么结果就是1,中间有一个数是0,结果就是0
|:按位或:如果有一个是1,结果就是1
^:按位异或:(同假异真)
~:按位取反: 将0变成1,将1变成0
>>有符号右移
<<左移
>>>无符号右移
运算符优先级
2,Scanner:扫描器
1、创建对象
类名 对象名 = new 类名();
Scanner的扫描器除了对象名你自己定义其余都是已经固定好的
Scanner sc = new Scanner(System.in);
数据类型 变量名 = sc.next数据类型();
除了char类型之外八种基本数据类型都可以使用Scanner进行接收
如果以后想要进行char类型元素的获取,就使用String类型
3,Random:随机数
1,创建对象
类名 对象名 = new 类名();
Random r = new Random();默认生成一个0 - 1之间的小数,包含0但是不包含1
生成0 ~ n之间的整数,包含0但是不包含n
int c = r.nextInt(100);
三,循环语句
1,for循环
for(初始化条件表达式;条件表达式;控制条件表达式){
程序执行的循环内容;
}
2,while循环
初始化条件表达式;
while(条件表达式){
循环体;
控制条件表达式;
}
执行过程:
1、初始化条件表达式,确定程序从什么时候开始执行,只执行一次
2、执行条件表达式进行判断,如果是true就执行语句,false就不执行
3、执行循环体
4、执行控制条件表达式对条件做出改变
5、回到第二步
3,do...while...循环
语法:
初始化条件表达式;
do{
循环体;
控制条件表达式;
}while(条件表达式);
执行过程:
1、执行初始化条件表达式,控制程序从什么时候开始执行
2、执行循环体
3、执行控制条件表达式
4、执行条件表达式进行判断,如果是true就继续执行第二步,如果是false,就不执行
特点:无论是否符合条件都至少执行一次,先执行后面改变条件之后再判断
4,死循环
死循环
没有停止的条件
死循环我们要避免,一般用在我们不知道程序要执行多少次的情况下
我们使用死循环的时候一般要使用分支语句,分支语句的条件里面必须有break,让循环停止
5,截断循环
截断循环
break:当一层循环结束循环.当有两层循环的时候,结束内层循环
continue:跳过当前的循环
四,数组
array
在计算机的内存中开辟 连续的内存空间 ,用来存储元素的 集合
1、数组中存储的元素的数据类型是相同的,由定义的时候数组的数据类型决定
2、数组中存储元素的时候如果使用动态初始化,我们只能存储指定的个数,如果想要存储 更多,
就要手动扩容,重新定义一个数组,将原来数组中的元素存储到新的数组中
动态初始化:
我们定义了数组,但是没有往数组中存储元素,现在空间已经有了,我们所有的空间都赋了 初始值
数据类型[] 数组名 = new 数据类型[数组长度或者元素个数];
不同的数据类型的初始值:
数据类型 初始值
byte short int long 0
float double 0.0
char /u0000
boolean false
String null
静态初始化:
当我们定义数组的时候直接给定数组中的元素,存储了多少元素,数组的长度就是几
1、数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...};
2、数据类型[] 数组名 = {元素1,元素2,元素3...};
如何获取数组长度:数组.length
如何获取数组中的元素:数组名[数组元素下标] : 数组元素的下标是从0开始的
如何给数组中的元素进行赋值:数组名[数组下标] = 赋值;
动态初始化:
数据类型[] 数组名 = new 数据类型[数组长度或者元素个数];
定义了一个int类型的数组,数组长度是5
int[] arr = new int[5];//[0,0,0,0,0]
arr[3] = 100;//[0,0,0,100,0]
如何获取数组长度:数组.length
如何获取数组中的元素:数组名[数组元素下标] : 数组元素的下标是从0开始的
如何给数组中的元素进行赋值:数组名[数组下标] = 赋值;
ArrayIndexOutOfBoundsException:抛出以表示使用非法索引访问数组。 索引为负数或大于或等于数组的大小。
foreach:增强for循环 我们可以获取到元素,不能获取到下标,但是可以自动对数组遍历赋值给变量
语法:
for(数据类型 变量名 : 数组名){
对变量进行处理;
}