在java中 数据类型转换由自动转换与强制转换,类型转换都是以数据存储空间大小来决定的。
自动类型转换
强制类型转换
语法:数据类型 变量名 = (数据类型)值;//值可能是更高的类型
注意事项:
1)高转低会导致精度丢失,不同类型的强制转换,可能会导致精度的下降
2)实际开发中:应该要知道被强制转换的数据,是在一个已知的范围
常量及转义符
①常量:常量就是一个固定不变的量(或者值)已知的值,例10,12,false等等
②常量的分类:整数常量、小数常量、字符常量、字符串常量、布尔常量
③转义符:Java规定特殊符号具有特殊意义,实现特殊目的的符号
④常见转义符:
1)\r 表示接受键盘输入,相当于按下了回车键
2)\n 表示换行
3)\t 表示相当于Table键制表符
4)\b表示退格键,相当于Back Space键
5)’ 表示单引号
6)’’ 表示双引号
7)\ 表示一个斜杠\
变量
(1)概念:
官方:在计算机内存区域分配了一个内存地址,计算机中的一个存储空间
通俗:变量可以看成是一个容器。我们对容器的概念就是它的作用是能够装一个东西
(2)语法:得到一个变量
①数据类型 变量名 = 值(定义的同时给变量赋值)
②数据类型 变量名;
变量名 = 值 (先定义变量,后赋值)
(3)使用及特点:
①变量定义好了之后可以反复使用的,通过变量名使用,使用变量名,使用的是值的数据
②一个变量的类型,限定了,变量可以存储值的类型
③一个变量只能存一次值【下一次存值,上一次的会被覆盖掉了】
(4)分类:
①成员变量:一个变量写在类的结构体中
特点:可以不用初始化值。会根据数据类型,存在默认值
②局部变量:一个变量,写在方法的结构体,就是局部变量
特点:在使用之前必须初始化值,否则就会报错,没有初始化
(5)作用域:定义一个变量在哪个范围可以使用,用结构体{}大括号来划分
①成员变量:在一个类中,全局都可以用的【全局变量】
②局部变量:一个局部,方法内部,划分结构体
表达式
1.概念:由一系列常量、变量、运算符、(小括号)组成的一个算式,为了按照一定的运算规则计算出结果值。(注:输出括号至允许传一个结果值)
2.表达式最后只有一个:结果
3.使用:
(1)结果值可以直接使用,也可以通过一个变量保存起来然后使用
表达式的结果值的类型 取表达式中操作数类型精度最高的
运算符
1.算术运算符
1.符号:加法(+)减法(-)乘法 (*) 除法(/) 取模(%)
2.取模(%)即取余数
2.自增自减运算符【难点 重点】
1.符号:+ + - -
2.注意事项:
(1)自增自减只能够用于变量,不能用于常量
(2)自增自减运算的优先级 比 算术运算符 高
3.使用
(1)自增运算作用于变量本身
int i = 6;
i++;(++运算符在变量的右边[变量自增1])
System.out.println(“i++ :” + i); //i = 7
++i;(//++运算符在变量的左边[变量自增1])
System.out.println("++i :" + i);//i = 8
(2)自增运算,表达式的结果值,赋值给另外一个变量
//自增运算表达式的++符号在右边
int j = i++;//++在右边,变量原来的值,作为表达式的结果[i 还是会自增]
System.out.println(“i:”+i);//i = 9
System.out.println(“j:”+j);//j = 8
//自增运算表达式的++符号在左边
int k = ++i;//++在左边,变量自增之后的值,作为表达式的结果[i 还是会自增]
System.out.println(“i:”+i);//i = 10
System.out.println(“k:”+k);//k = 10
(3)自增运算,表达式的结果值,赋值给自己这个变量变量
//自增运算表达式的++符号在右边
i=i++;//i最终的结果,由表达式来决定【查看++前或者后,表达的结果怎么算的】
System.out.println(“i=”+i);//i = 10
//自增运算表达式的++符号在左边
i=++i;
System.out.println(“i=”+i);//i = 11
区别:
把整个表达式看成是一个整体
如果变量名在前面,那么整个表达式的值就是原来值不变。
如果变量名在后面,那么整个表达式的值就是原来的值加1.
3.赋值运算符
1.符号:= += -= *= /= %=
2.规则:从右到左,把符号右边的值赋值到左边的变量中
3.//s+=5;//可以[看成]是 s = s+5;【赋值方式,存在隐式的数据类型转换】但是不能等同于,
4.注意:
(1)加减乘除:赋值运算【右往左】
(2)右边的运算,没有到左边的最后一步,右边继续参与运算的是表达式
4.比较运算符
1.符号:==(是否相等) !=(是否不等)> < >= <= instanceof
2.规律:
(1)较运算的结果是一个布尔类型的值(true 或false)
例;System.out.println(3>5);//输出结果为boolean 类型
(2)特别说明:instanceof 是判断一个对象是否属于某种类类型
instanceof 类型比较【只能引用类型数据的,类型比较】
值【值,变量,表达式】 instanceof 数据类型
5.逻辑运算符
1.符号:&与,|或,&&逻辑与,||逻辑或,^异或, !非
2.作用:是应用于多个条件的组合判断。//5>3>1
3.具体规则:
(1)&;两边都为真,结果为真
(2)|;只要一边为真,结果为真
(3)&&:两边都为真,结果为真[短路行为:如果前面都为假了,后面的表达式就不算了]
(4)||:只要一边为真,结果为真[短路行为:如果前面都为真了,结果就为真了,后面就不需要运算了]
(5)^:两边不一样,结果为true ,否则为false
(6)!:逻辑非,即取反
4.& |与&& ||的区别
a)& | 既可以充当逻辑运算,也可以是位运算符
b)根据表达式的结果是否为 布尔类型 来判断是那种
6.位运算符【了解】
1.概念: 计算机磁盘二进制位的运算,二进制数据的运算,也就是说是二进制的位进行计算
2.符号:& | ^ ~ << >>>>>
3.意义:
(1)&:与 位运算,两边为1,结果为1
(2)|:或 位运算,有一个为1,结果为1
(3)^:异或,两边不一样,就为1,否则为0
(4):取反,1变成0,0变成1(-5)结果4
(5)<<:向左位移动,例如1<<3结果8
(6)>>>:无符号向右移动
7.三目运算符【重点,难点】
1.概念:由问号?及冒号:分割的三个表达式,组成的一个表达式如X ? Y : Z ;按照一定规则进行运算的式子,称为表达式;该表达式具有一个结果值,其中:
(1)X ? 布尔类型的值或者结果为布尔类型的表达式
(2)Y Z ? 一般来说数据类型相同的值或者表达式
2.语法:X ? Y : Z
(1)x:boolean类型的值,或者表达式
(2)y:值1
(3)z:值2
(4)整个三目运算的结果值,由X整个表达式的结果,来决定到底值1值三目运算的结果,还是值2是,如果x的值是true,为Y,如果x的值是false,则为z
注意:值1,和值2,值一般类型是相同,类型有可能不同
如果三目运算的结果值类型不一致,该结果值不能先保存在使用,只能直接使用