1、变量
1.1 什么是变量?
变量是计算机语言中的一个概念,可以表示某个具体的数值,并且这个值可以修改,如果不能修改的值,就叫做常量。
1.2 为什么要使用变量?
程序需要将各种数据先存储咋再运算,计算机存储的地方叫内存,JVM内存。
JVM内存不等于本地内存,元空间直接使用本地内存。
int num = 100;
double num2 = 0.03;
从内存中取数据,是先通过内存地址找到具体的内存区域,进而取出里面存放的数据。
问题:内存地址是十六进制的数据,并且没有规律,是随机生成的,例如:00fff2342 、 0asfw23423,内存地址根本记不住,怎么解决?
内存地址记不住,那自己给它取个名字就一定可以记住了。
变量的作用是为了解决内存地址不方便记忆的问题,开发者可以自定义数据的别名,从而完成数据的读取。
变量是程序存储数据的基本单元,变量有三要素:
1、数据类型
2、变量名
3、变量值
int num = 100;
double num2 = 0.03;
1.3 变量的命名规范
变量名可以包含数字、字母、下划线、$,不能包含空格、运算符,不能以关键字命名,不能以数字开头。
变量的命名不能随便起,应该做到见名知意,遵循驼峰式命名法(第一个单词首字母小写,后续单词的首字母大写)。
2、java中的数据类型
Java中有多少种数据类型? 无数种
分为两大类:
2.1基本数据类型
8种
整数类型:byte、short、int、long
byte(1个字节):1个字节是8位的二进制数,如:0011 1111
1KB = 1024byte
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
short:2个字节,16位二进制数
int:4个字节,32位二进制数
long:8个字节,64位二进制数
浮点型:float、double
float:4个字节,单精度浮点型
double:8个字节,双精度浮点型
精度就是描述数据的精准度,因为小数在计算机中的存储可能涉及到数据的丢失。
除不尽的小数在存储的时候会存在精度的丢失,使用double存会比float精准一些。
布尔型:boolean 描述逻辑结果
只有两个值:TRUE-成功、FALSE-失败
boolean的大小是多少个字节?
是1/8个字节,说明:1bit是一位二进制数,1byte = 8bit,用1表示true,0表示false
字符型:char 描述字符
‘a’ ‘你’ 只能描述单个字符,大小是2byte
实际开发中比较常用的基本数据类型包括:
int、double(BigDecimal)、boolean、long
2.1.1 自动类型转换
Java程序根据变量数据类型,自动对数值进行类型转换,以匹配变量的数据类型,这种叫做自动类型转换。
转换规则:只能由低字节向高字节转换,反之则不行。
double 8个byte
int 4个byte
只能由int转到double,不能从double转到int
记忆:小屋换大屋没问题,大屋换小屋肯定不行没人愿意
2.1.2 强制类型转换
强制类型转换一般不推荐使用,能不用尽量不用,因为这种方式会存在数据安全问题,可能会产生数据的
2.2 引用数据类型
有无数种,除了JDK提供的类库之外,开发者还可以自定义数据类型。
3、运算符
3.1 赋值运算符
=
int num = 10;
3.2 算数运算符
3.2.1 基本算数运算符
+ - * / % ++ --
3.2.2 复合算数运算符
+=、-=、*=、/=、%=
变量A += 变量B :先求出变量A+变量B的结果,再把这个结果赋值给A
i += j;
i = i + j;
3.3 关系运算符
==、!=、>、<、>=、<=
>、<、>=、<=:只能用作基本数据类型的变量,应用类型的变量不能使用
关系运算符是用来判断两个变量的关系的,返回值类型是boolean
3.4 逻辑运算符
判断逻辑是否成立,一般使用在多个表达式的情况下
什么是表达式?10 == 10
&、 |、 !
A & B:A和B都为true,结果返回true
A | B:A或B为true,结果返回true
!:取反,A = true,则!A = false
&&、||
&& 短路与
|| 短路或
&&和&的运算结果完全一致,但效率更高
||和|的运算结果完全一致,但效率更高
A & B :先执行A,在执行B,再将A和B进行与运算(不考虑A B结果)
A && B:先执行A,如果A是false,就不再执行B,直接返回结果false,如果A是true,就需要执行B的结果,再来判断最终结果。
短路或方式同短路与。
短路与
|| 短路或
&&和&的运算结果完全一致,但效率更高
||和|的运算结果完全一致,但效率更高
A & B :先执行A,在执行B,再将A和B进行与运算(不考虑A B结果)
A && B:先执行A,如果A是false,就不再执行B,直接返回结果false,如果A是true,就需要执行B的结果,再来判断最终结果。
短路或方式同短路与。
A || B:先执行A,如果A是true,就不再执行B,直接返回结果true。