五、常量
5.1 概述
常量:是指在java程序运行期间固定不变的数据
5.2 分类
常量命名:全大写+下划线字母命名
六、变量和数据类型
6.1 变量
概述:程序中可以改变的量称为变量,内存中最小的存储单元。为什么用变量?间接的思想,间接的越多,证明程序越优秀!
数学中可以使用字母代替数字的方式运算,例如x=1+5或者6=x+5;程序中也是一样是的,相当于一个容器,内部可以存储数据。Java中要求一个变量每次只能保存一个数据,必须明确保存的数据类型。
定义变量的格式:
数据类型 变量名 ; int a;
变量名=值; a = 10;
数据类型 变量名 =值;
public class Demo02 {
int b = 20;
public static void main(String[] args) {
//年龄
int age;
//定义一个int类型的变量
age = 10;
//给age赋值在内存中开辟一块内存空间 起名为age 并且这块内存空间中只能存储int类型的数据 //int a,b,c;//同时定义多个变量
int a=10,b=8,c=9;
//定义变量的同时,初始化
System.out.println(age);
}
}
注意:
- 变量必须初始化后才能使用
- 不能有同名变量
- 在该个类型的变量中只能存储该类型的数据。
- 可以同时定义多个变量并赋值(但是,不推荐使用!)
6.2 数据类型
声明:数据类型 变量名 = 初始值;
基本数据类型:
四类八种:
整型 整数 byte short int long
浮点型 小数 float double
字符型 一个字符 char
布尔型 boolean
引用数据类型:
String字符串 数组,函数,对象 Enum枚举
分类:
(1)整数类型变量
- 整型类变量用来存储整数数值,即没有小数部分的值
整数类型分四种不同的类型:
字节型(byte)、短整型(short)、整型(int)默认、长整型(long)
1TB = 1024GB
1GB = 1024MB
1MB = 1024KB
1KB = 1024Byte
1Byte = 8 bit 比特
int是默认类型。
byte 一个8位二进制数 01011010
反编译。
- 如果想使用long 必须在数据的后边 加一个 L 后缀
为什么java中要整四个类型表示整数?
- 因为不同的类型 所占的内存大小不一样,那么存储的范围也就不一样。
(2) 浮点类型
- 浮点类型分为两种:单精度浮点(float)、双精度浮点(double)
- double型所表示的浮点数比float型更精确;浮点数的默认类型为double类型。
- 小数默认double 如果非要用float 必须加上 F 的后缀
(3)字符类型
- 字符类型变量用于存储一个单一字符,Java中用char表示。
- Java中,每个char类型的字符变量都会占用2个字节,16位。
- char类型的变量赋值时,需要英文的单引号' '把字符括起来,如'a'。
char类型的变量赋值范围是0~65535内的整数。
char a = '中';
面试题:char类型能存储汉字吗?
能,因为一个汉字是两个字节
- 任何字符在内存中都是以数字的形式存储的。
注意事项:
1.字符串是引用数据类型
2.浮点型可能只是一个近似值,并非精确的值
3.数据范围与字节数不一定相关,
例如float 数据范围比long更加广泛,但是float是4字节,long是8字节
4.浮点数默认double类型,如果一定要使用float类型,需要加上一个后缀 F/f。
如果是整数,默认为int类型,如果一定要使用long类型,需要加上一个后缀L/l表示long类型。
后缀推荐使用大写字母。
(4)Boolean
布尔类型变量用来存储布尔值,在Java中用boolean表示,boolean类型的变量只有两个值,即true和false,默认值为false。每个boolean占8位。
变量使用时的注意事项:
1.如果创建多个变量,那么变量之间的名称不可以重复。
2.对于float和long类型来说,字母后缀F和L不能丢掉。
3.变量右侧的数据值不能超过左侧类型的范围。
4.变量一定要赋值*(初始化)后才能使用。不赋值不能直接使用。
5.变量的使用不能超出作用域的范围。
作用域: 从定义变量的一行开始,一直到直接所属的大括号结束为止。
6.可以通过一个语句来创建多个变量,但是不推荐使用。
七、运算符
算术运算符:+(字符串拼接运算) - * / % ++ -- ;
++ -- 一元运算符
1.如果直接使用,前置++跟后置++没有区别
2.如果用于 赋值 js中那一套。
关系(比较)运算符:>= <= > < !=;
==:
1.如果是基本数据类型比较值。
2.如果是引用数据类型 比较的内存的地址值!
他的结果一定是一个boolean值,true/false,如果是连续判断不能连着写。
逻辑运算符:只能使用boolean值,条件可以连续写
&&(并且) 所有条件全都满足才是true,否则false
||(或者) 至少有一个是true就是true否则false
! (取反) 直接相反的结果
赋值运算符:=, += , -=, *= ,%= ,/= 复合赋值运算符会隐含强制类型转换。
条件运算符:? : 三目表达式
格式:数据类型 变量名称 = 条件判断 ?表达式A : 表达式B;
*(表达式A和表达式B 要同时符合左侧的数据类型)
流程:首先判断条件是否成立
如果成立 表达式A
如果不成立 表达式B
一元,二元,三元 元就代表需要一个数据
优先级
() ++ ,-- , ! --》 算术运算符 (* / +-)--》关系运算符--》逻辑运算符(&& ||)--》赋值运算符--》条件运算符
- ++
- 条件运算符:
八、类型转换(数值数据)
Java中要求参与计算的数据,必须保证数据类型的一致性,如果数据类型不一致将发生类型的转换。
- 隐式转换(自动)
- 特点:自动完成,不需特殊处理
- 规则:范围从小-->大
- 显式转换(强制)
- 特点:需要数据处理,不能自动进行
- 规则:小范围 变量名 = (范围小的类型)范围大的数据
byte a = 10; int b = a; //1.自动转换 //此时 a是Byte b 是int类型 ---》由小范围 ——-》大范围 System.out.println(b); int c = 10; byte c1 = (byte) c; //此时 c是 int c1 是byte --> 此时放不下 //2.如果非要放 强制类型转换 // 由大范围 ——-》小范围 // 小数据类型 变量 = (左边的小数据类型) 大类型的值。 //注意:强制类型转换有可能会造成 精度丢失 和 数据溢出 //精度丢失 double d1 = 3.141592657678686876; float d2 = (float) d1; System.out.println("d2 :"+d2); int d3 = (int)d2; System.out.println("d3 :"+d3); //数据溢出 long l1 = 7000000000L; int l2 = (int)l1; System.out.println("l2: "+l2); //元码,补码,反码 }
两个数据运算,得到的结果会自动的提升为两个数据中较大的类型。
特殊情况:
九、Scanner类,控制台的输入
是java提供给我们的类,我们只需要直接用就可以了。
附件
ASCII(小表):American Standard Code for Information Interchange 美国信息交换标准代码
Unicode码表(大表):万国码,也是数字和符号的对照关系,开头0-127部分和ASCII完全一样,但是从128开始包含有更多字符。
Emoji:
ascii表格
unicode : 万国码 任意一个字符都可以在这里找到。
Emoji 颜文字