一、数据类型与变量
1.常见的数据类型 (8种数据类型,这8种数据类型也叫基本数据类型)
1.整型
(1)byte short int long
//其中java中相对于c多出来了一个byte的整型类型,占用1个字节
2.浮点型
(1)float double
(2)float在java中占用4个字节 double在java中占用8个字节
3.字符类型
(1)char
//java中char占用的是两个字节
4.布尔类型
(1)boolean (这个是关键字)
//没有明确说这个类型占用多少字节
2.上面的这些变量的大小,并不受平台的影响
1.上面的整型和浮点型的数据都是带有符号的
2.整型默认是int类型,浮点型默认是double类型
(1)定义变量的时候的作用很大
3.上面的8种类型叫做基本数据类型
4.类似于String类型的,数组,类,接口等,都叫做引用数据类型
3.变量
1.基本语法格式 数据类型 变量名=初始值;
2.java的局部变量如果没有进行初始化,输出的时候会报错
(1)如果没有合适的数值进行定义,可以先初始化为0
(2)设置的字面值的时候不能超出规定的最大值和最小值的范围。否则会报错
(3)如果使用其他的形式比如xxx+xxx xxx+a 这样的形式,虽然检测不出来,但是会溢出
3.能输出整型变量的最大值和最小值
(1)图片中的叫做int的包装类,其他类型的也有相似的Long.MAX_VALUE
二、定义变量的注意事项
//包装类型只是针对基本数据类型的
1.定义长整形变量的时候,在初始值后面加上L或者l
1.这两种都是可以的,但是推荐使用大写。当然不写这个L l也是能定义的,这样只是为了更直观的表示出来
2.long类型的包装类名字是Long (Long.MAX_VALUE)
2.short的包装类的名字是Short
3.byte的包装类名字是Byte
4.关于浮点型数据运行期间的规则
1.如果是两个整型变量进行相除,如果有小数,会将小数部分直接舍弃,取整数作为结果。想要得到小数只能使用浮点类型的变量
2.但是如果其中一个进行了整型提升,再与整型的数据参与计算,其结果也会进行整型提升
(1)第一个输出的结果是0,第二个输出的结果是0.5
3.double的包装类名字叫做 Double
4.定义单精度浮点数的时候,如果不在初始值后面加上f,则会报错。因为默认浮点数是double类型的。
正确的写法是 float a=1.1f; 因为字节数不一样
5.但是对于类似的byte num1=10, short num2=10;为什么就不会报错
(1)这是因为赋值的数值没有超过此类型的所表示的范围,也就因此没有被解析为整型
5.定义字符型变量
1.char 类型的变量是两个字节。 汉字也是两个字节,所以在java中定义变量可以表示汉字
2.java中使用单引号+单个字符或者汉字 来表示字符字面值
3.计算机中的字符本质上是一个整数,在c语言中用ascll来表示字符,java中使用Unicode表示字符,因此一个字符占用两个字节,表示的字符种类更多,包括中文
4.如果使用命令行的形式来编译java的代码,就需要在javac后面加上 -encoding UTF-8即可
5.char的包装类型叫做 Character
6.布尔类型的变量
1.关键字boolean
2.这个变量只要有两个变量值,一个false,一个true
3.注意: java中true并不等于1,false并不表示0 这两个是不同的变量,不能互相转换。而且布尔类型的变量所占字节数并没有明确的告知。
(1)
整型变量赋值true是错误的,并且输出的时候是输出的true。
4.bool类型的包装类为 Boolean
三、数据类型转换
java作为一个强类型编程语言,当不同类型之间的变量相互赋值的时候,会有严格的校验
//在java中,当参与运算数据类型不一致的时候,就会进行类型转换。类型转换分为两类,自动类型转换(隐式),强制类型转换(显示)
//但是类型转换的数据最起码是相关联的,不相干的类型是不能进行转换的
1.自动类型转换(隐式)
1.特点是数据范围小的往数据范围大的类型进行转换。就像下面的图片,在a给b赋值的时候,会将a的数据类型提升为long类型的,再进行赋值
2.类似的还有
(1)float表示的范围小,double表示的范围大,num1在进行赋值的时候会进行隐式类型转换。
2.强制类型转换(显式)
1.特点是范围大的向范围小的进行转换
(1)就像这张图片,可以使用 a=(int)b; 这样的形式进行转换
(2)但是这样转换可能会丢失数据
3.计算中出现的转换
1.两个字节大小不同的变量进行计算
(1)这样出错的原因是,在计算中a会提升为double,但是c被赋值为一个double类型的变量。出现错误
(2)解决方法就是定义c为double类型的变量,或者将结果进行强制类型转换
2.byte和byte的变量
(1)出现错误的原因是计算的时候,任何小于4字节的类型在计算的时候会提升为4个字节,再进行计算。此时没有进行转换的情况下,就会出现错误
四、字符串类型
1.定义字符串类型的关键字 String
1.常用的使用方式
也可以使用String arr1=arr;
2.c语言中,字符串结尾是\0.但是java中字符串结尾什么都没有
(1)输出的长度就是5,一共有5个字符
3.将数字字符串专转换成为数字(通过包装类的方法)
(1)此时输出的就是123
4.同样能将整型的数字,转换成为字符串(通过包装类的方法)
5.字符串拼接 +
(1)输出的括号中,前面是字符串的情况下,后面的+都是一个拼接符号,并不是运算符,
//图片上面的这种情况输出的是 hello21
(2)字符串在后面的情况
//这样输出的就是3hello。 只是紧挨着以及字符串后面的 + 才算是拼接符
五、运算符
//常见的见c语言的用法,下面只记录一些特殊的
1.取余数 %
1.答案是 1 1 -1 -1
(1)就是a除以b,上c,余d。 这个d和什么负负得正没有关系
2.在java中 ,%两边可以不是整型。(c语言是)
(1)也可以两边都是浮点数,这样写是正确的
2.向类型大的提升
1.如果输出的是一个算式,两侧操作数类型不同时,向类型大的提升
(1)这个就是向double类型提升
3.关系运算符的值只能是true或者false
1. > < >= <= ++ !=
2.但是不能出现a<b<c 这样连续的运算符比较的。
(1)因为返回的类型是布尔类型的,布尔类型的不能和整型或者浮点型变量进行比较
3.还有逻辑运算符,运算的结果同样是布尔类型的
(1)&& || !
六、异常
1.异常有很多种类,这种红色的就是异常。 这个叫做算数异常