-
布尔类型变量
- boolean
- 仅有true和false
- 与c语言中的0为假,1为真不可等同
- 类型大小不定,有的JVM中时一个字节,有些事1bit
-
字符串类型变量
- C语言中无字符串类型,java中有
- 用“ ”括起来的一串字符为字符串字面值
- 为引用数据类型
- 有些字符串中的字符需用到转义字符,如打一个‘’,那可能需要:" "
基本数据类型 byte、short、int、long、float、double、char、boolean 引用数据类型String、数组、接口、枚举。。。 - 字符串拼接
public class helloworld{ public static void main(String[] args){ System.out.println("nihao"+10);//会拼接为nihao10,这么个字符串 System.out.println(10+20+"nihao");//由于顺序计算,所以最终是:30nihao System.out.println(10+""+20+"hello");//1020hello } }
-
转义字符(常用的就这几个)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fMzNSQSq-1635823080418)(C:UsersLebronHardenAppDataRoamingTyporatypora-user-imagesimage-20211102095518215.png)]
-
变量的作用域濾
-
一个变量能够生效的范围,一般是变量定义所在代码块
-
只有8种基本数据类型才有对应的包装类
-
java中的变量:(java中没有C中的全局变量)
成员变量 普通成员变量、静态成员变量 局部变量同C
-
-
变量的命名规则
- 硬性指标
- 一个变量名只能包含数字、字母、下划线(及$,但不要用)
- 数字不可作开头
- 变量名大小写铭感
- 软性指标
- 变量名最好可以顾名思义
- 变量名最好别用拼音
- 变量名的词性最好是名词
- 小驼峰(类名用大驼峰)
- 硬性指标
-
常量(运行中不可被修改的量,只能被初始化一次)
- 字面值常量
- final关键字修饰的常量(类似C中的const)
变量在程序运行时,才知道是几
常量在编译时,已经确定是几
-
理解类型转换
-
public class helloworld{ public static void main(String[] args){ int a=10; long b=20; a=b;//报错 b=a;//成功编译 } }
-
不同数据类型变量之间的赋值,表示范围更小的类型可隐式类型转换为范围较大的类型
反之,则不行。
-
-
int和boolean之间的相互赋值
public class helloworld{ public static void main(String[] args){ int a=10; boolean b=true; a=b;//报错 b=a;//报错 } }
- int和boolean类型互不相干,不可相互赋值
-
int字面常量给byte赋值
public class helloworld{ public static void main(String[] args){ byte a=100;//通过 byte b=200;//不通过 } }
- java中使用字面常量赋值时,java会自动进行书库范围校验,判断是否合理,这里的byte可表示范围是:-128~127
-
使用强制类型转换
- double类型的数据,强制类型转换后,小数部分丢失
- 强制类型转换不一定成功,互不相干的类型无法强转。
-
对上述的总结✈️
- 不同数字类型变量之间的赋值,小范围的变量可做隐式类型转换后赋给大范围变量,反之不可
- 要对1中的 *** 作(大范围数据赋给小范围数据)硬搞,只可做强转,但此时可能会有精度丢失
- 用字面常量做赋值不可超出被赋值变量的可表范围
-
理解数值提升
-
int 和long混合运算
public class helloworld{ public static void main(String[] args){ int a=10; long b=20; int c=a+b;//出错,a+b结果为long,不可赋值给int的c long d=a+b;//通过 } }
-
byte和byte的运算
public class helloworld{ public static void main(String[] args){ byte a=10; byte b=20; byte c=a+b;//出错,a+b的结果是int类型,不可赋值给byte类型的c } }
-
对上述的总结礪
-
小于4byte的表达式运算,即使同类型,也都会提升为4byte,在计算
-
大于4byte的表达式混合类型运算,小的会转成大的再运算,其结果也是大范围的类型
-
int和string之间的相互转化
public class helloworld{ public static void main(String[] args){ int num=10; String str2=num+"";//这里是上面有讲到的字符串拼接的知识,此时的10相当于字符串了 String str1=String.valueOf(num);//String为包装类,这个包装类中有很多的方法(函数),这里的.就是调用,调用了valueOf(int num)这个函数,含义是:把int属性的num改成String属性。形式上没啥变化,但10已经不再是int,而是String. } }
public class heloworld{ public static void main(String[] args){ String str="123"; int ret=Integer.valueOf(str); System.out.println(ret+1);//输出124,道理和前述代码一致 } }
包装类小总结
- 在java中每个基本数据类型都有自己对应的包装类(里面包含了丰富的函数(方法))
- 除了int和char两个基本数据类型的包装类的类名分别是:Integer和Character,其他基本数据类型对应的类名都是首字母大写,如long的包装类的类名就是Long
运算符
- 算术运算符
- +—*/%
- 对/:
- 分母不能为0
- int/int可能会精度丢失
- java中每个语句自带assert,也就是说语句报错后,不再往下继续执行!
- 对%:
- 不同于C中只能 *** 作数为整数的限制,java中int和double都可以使用
- 增量赋值运算符
- 同C中的复合赋值运算符
- 自增自减运算符(同C)
- 关系运算符
- > >= < <= == !==
- 关系运算符的表达式返回值都是boolean类型
- > >= < <= == !==
- 逻辑运算符
- && || !(同C)
- 注意逻辑运算符有短路现象!!!
- !的 *** 作对象需为布尔表达式
- 位运算符
- & | ^
- 十进制转其他进制(如8/16),先写出二进制补码,对8进制3个3个一组,16进制,4个4个一组去读那个补码的数据,就是你转换而来的东西。
- 移位 *** 作符
- 左移、算术右移、逻辑右移(无符号右移)
- 左移1位相当于×2,移N位就是×2^N
- 右移1位相当于/2,移N位就是/2^N
- 计算机的移位效率高于计算乘除,所以当某个代码正好乘除2^N时,可用移位 *** 作符代替
- 移动负数位和移位的数字过大度没有意义
- 条件运算符
- 表一?表二:表三(同C的三目运算符)
- 表1位布尔表达式
- java中的唯一一个三目运算符
- 运算符的优先级
- 用括号去控制,所以不用去刻意的记优先级
效率高于计算乘除,所以当某个代码正好乘除2^N时,可用移位 *** 作符代替
- 移动负数位和移位的数字过大度没有意义
- 条件运算符
- 表一?表二:表三(同C的三目运算符)
- 表1位布尔表达式
- java中的唯一一个三目运算符
- 运算符的优先级
- 用括号去控制,所以不用去刻意的记优先级
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)