java学习记录二:变量、数据类型、ASCII码表和运算符
一、变量的解释
概念:在程序的执行过程中,其值可以在一定范围内发生改变的量。
白话:变量可以看作是一个容器,可以存储数据,但只能存储一个数据,存储的数据可以发生变化,且数据是有类型的,
二、数据类型
java里的单位是字节,8位是一个字节。数据类型就是解释这个数据是什么类型的,有数字,字符串,小数等。
1.基本数据类型
8种:byte,short , int,long ,float ,double,char,boolean
js种基本数据类型是:string,number,boolean,undefined,null
数据类型 | 关键字 | 内存占用 | 取值范围 |
---|---|---|---|
字节型 | byte | 1个字节 | -128 至 127 -128 |
短整型 | short | 2个字节 | -32768 至 32767 |
整型 | int(默认) | 4个字节 | -231 至 231-1 |
长整型 | long | 8个字节 | -263 至 263-1 19位数字 |
单精度浮点数 | float | 4个字节 | 1.4013E-45 至 3.4028E+38 |
双精度浮点数 | double(默认) | 8个字节 | 4.9E-324 至 1.7977E+308 |
字符型 | char | 2个字节 | 0 至 216-1 |
布尔类型 | boolean | 1个字节 | true,false |
java中默认类型:整数是int,浮动类型是double
float采用科学计数法,取值范围远远大于long类型
long类型:建议数据后加L表示。
float类型:建议数据后加F表示。
2.引用数据类型
类,接口,数组,枚举
3.变量默认值
String null
int 0
三、变量和内存的关系
将内存比作田地,变量就是萝卜坑,一个萝卜一个坑,大萝卜放大坑,小萝卜放小坑。大萝卜不能放小坑,小萝卜放大坑浪费。方萝卜不能放圆坑,圆萝卜不能放方坑。后放的萝卜会把前面的萝卜挤掉。
变量的本质就是内存中的一块空间,空间的大小由数据类型决定。要想找到变量对应的内存空间的数据,需要给变量对应的内存空间起个名字,叫做变量名称。变量对应的内存空间必须有数据才能使用,这种向变量内存空间中,存储数据的过程叫做初始化或者赋值。
后赋值的数据会覆盖前面的数据。
四、定义变量的格式
1.先创建变量,再赋值
数据类型 变量名称;
变量名称 = 数据值
2.创建变量时,同时赋值
数据类型 变量名称 = 数据值
3.创建多个变量,再赋值
数据类型 变量名称1,变量名称2,变量名称3;
变量名称1 = 数据值1;
变量名称2 = 数据值2;
变量名称3 = 数据值3;
4.创建多个变量时,同时赋值
数据类型 变量名称1= 数据值1,变量名称2 = 数据值2,变量名称3 = 数据值3;
五、定义变量的注意事项
变量名称:在同一个大括号范围内,变量的名字不可以相同。
变量赋值:定义的变量,不赋值不能使用。
定义long类型的变量时,需要在整数的后面加L(大小写均可,建议大写)。因为整数默认是int类型,整
数太大可能超出int范围。
定义float类型的变量时,需要在小数的后面加F(大小写均可,建议大写)。因为浮点数的默认类型是
double, double的取值范围是大于float的,类型不兼容。
六、标识符
1.标识符解释
程序中起名字的地方就叫标识符(类名,方法名,变量名)
2.标识符命名规则
标识符可以包含 英文字母26个(区分大小写) 、 0-9数字 、 $(美元符号) 和 _(下划线) 。
标识符不能以数字开头。
标识符不能是关键字。
3.命名规范
类名规范:首字母大写,后面每个单词首字母大写(大驼峰式)。
方法名规范: 首字母小写,后面每个单词首字母大写(小驼峰式)。
变量名规范:首字母小写,后面每个单词首字母大写(小驼峰式)。
七、数据类型转换
1.自动转换(类型小的自动转类型大的,一般在计算中)
数据类型不一致时,进行计算会自动转换,自动类型转换是自动完成的。从小到大的类型转换是在左边补上0,补满为止。
byte,short和char参与运算会自动变成int类型。
注意接收结果的变量数据类型一定要比计算结果大,不然计算的结果存不进去。
int和dobule计算会变成dobule类型,int和int计算还是int类型
自动类型都会从小往大自动转换。
2.手动强制转换(类型大的转类型小的)
大数据存到小类型变量里,需要手动强制转换,不然会报错。
大的数据不能直接赋值小的数据类型变量中,有两种解决方案,
1.把变量内存扩大
即在定义变量类型的时候,就定义大内存类型的变量。
2.把数据变小
long变成int
把左侧的4个字节内容减去,如果都是0,对结果没有影响。要是减去的有1,会有影响。
写法:
double d = 1.5
int y = (int)d //1
强制把dobule转int,结果变成了1,丢失了精度
short s=1
s = s+1 //报错,变成了int类型,
需要把结果变成short类型
int a =65
char s = (char)( a)//B,将int类型,强制转为字符类型,
八、ASCII码表
计算机只能存储0和1,所以存储到计算机中的所有内容都会转换成0和1进行存储。
这时候需要一张表来把0和1组成的数字来对应各自的字符。就会ASCII码表。先把二进制转10进制,再找表中对应的字符,显示出来。
A是65,a是97,’0‘是48
取的时候,把对应二进制转换为十进制,找到ASC表中对应的字符。
九、算数运算符
对常量和变量进行操作的符号。
1.+:加法运算
1.数学中的加法运算,java中字符会变成int相加,变成数字运算。
2.字符串才会拼接起来。java里一定要区分字符和字符串,不是同一个类型。
2.-:减法运算
3.*:乘法运算
4./:除法运算
int类型之间的运算取整数,会有余数,需要小数的话,需要转成doubel运算。
5.%:模运算
取余数。可以判断数字的奇偶性。可以去各个位子上的数。
被除数%10,取个位
被除数/10%10,取十位,
被除数/100%10,取百位。
6.=:赋值运算符
就是给变量赋值
赋值运算符特点
1.+=,-=,/=,*=,%= 运算结果的数据类型和左侧变量的数据类型不一致,隐藏强制类型转换
2.整数常量只要不超出所赋值的整数变量的取值范围,可以直接赋值,内部隐藏强制类型转换
/*
右侧10是int类型(4个字节),左侧变量byte类型(1个字节)
按照道理来讲: 大萝卜是不可以直接放入小坑中的
现在为什么可以呢?
原因是数字10是一个常量,值并没有超出byte的取值范围
所以可以直接赋值,内部会帮助我们进行强制类型转换
等价于:
byte b = (byte)10;
*/
byte b = /*(byte)*/10;
System.out.println(b);//10
7.复合赋值运算
+=:a+=b a =a+b
这种运算,会发生强制类型转换,将数据变小,放进变量中。容易发生精度丢失。
-=:
*=
/+
%=
8.自增和自减运算符
++a/–a:先加/减1,再进行运算
a++/a–:先运算,在加/减1