一、基本数据类型
八种类型:
类型 | 名字 | 长度 | 备注 |
byte | 字节 | -128~127(一个字节8位) | |
short | 短整型 | 2个字节 | |
int | 整型 | 4个字节 | |
long | 长整型 | 8个字节 | |
float | 单精度浮点型 | 4个字节 | |
double | 双精度浮点型 | 8个字节 | |
char | 字符型 | 2个字节 | |
boolean | 布尔型 | 1 需要一个字节空间,但只需要一位 |
基本数据类型转换:
转换时遵循以下原则:
低级类型向高级类型自动转换;
容量小的类型自动转换为容量大的数据类型;
数据类型按容量大小为:
//面试题
byte b2 = 1;
byte b3 = 2;
//字节类型相加结果为int类型
byte b4 = (byte)(b2+b3);
注意:boolean类型不可以转换为其他数据类型
常量
不可改变的量,用final修饰
语法格式:final 类型 标识符 = 值;
public static void main(Stirng[] args) {
//ctrl+shift+x变大写 y变小写
final double = PI = 3.1415926;
//PI不可被修改
}
二、运算符
算术运算符
符号 | 含义 | 举例 |
/ | 除(除法的运算规则) | 10/3.0=3.3333333333333335 |
% | 取余(l两数相除后取余数) | 10%3=1 |
public static void main(String[] args) {
System.out.println(10/3);//3
System.out.println(10/3.0);//3.3333333333333335
System.out.println(10%3);//1
System.out.println(10%3.0);//1.0
System.out.println(1.5%3);//1.5
System.out.println(2%0);//运行时错误
//Exception in thread "main" java.lang.ArithmeticException: / by zero
}
关系运算符
public static void main(String[] args) {
//E语言
int age=22;
System.out.println(age>=18);//true
if(age>=18){//如果
System.out.println("已成年 可以养活自已");//已成年,可以养活自己
}else{//否则
System.out.println("未成年");
}
int year=2018;
if(year==2018){
System.out.println("好巧 刚好是今天");//好巧 刚好是今天
}
boolean bool=false;
//双等号表示比较 一个等号表示赋值
if(bool==true){
System.out.println("true");
}else{
System.out.println("false");//false
}
}
位运算符
00000110 ~6 11111001 ? 11111000 -1 10000111 反过来 -7 ============================== 00000001 ~1 11111110===计算机当中认是负数 开始转换 (补码加了1 所这里减1)-1 11111101 开始反过来 10000010 -2 原码 反码 补码 正数的原码反码补码相同 负数的原码反码补码不相同 1:先反 2:加1 |
public static void main(String[] args) {
System.out.println(10&6);//2
System.out.println(10|6);//14
System.out.println(10^6);//12
System.out.println(`1);//-2
System.out.println(`6);//-7
}
位运算应用
public static void main(String[] args) {
//权限管理应用
int userAuth = 8;//用户管理
int hrAuth = 4;//人事
int moneyAuth = 2;//财务
int gunAuth = 1;//枪支管理
int ownerAuth = 8;
if((ownerAuth & gunAuth) == gunAuth) {
System.out.println("有枪支管理权限");//有枪支管理权限
}else {
System.out.println("无枪支管理权限");
}
}
短路与非短路
短路符号
&& 且 同时为true才会为true
条件1 && 条件2 false && ? 如果前面的为false则后面的不再执行
|| 或 只要一个为true 就结果为true
条件1 || 条件2 如果条件1为true则后面的不再执行和检查
非短路[不管怎么样 后面的条件都会执行]
& 条件1 & 条件2 false | 同样会检查 如果前面的为false 后面的条件会继续检查
|
条件1 |条件2 如果条件1为true 后面的条件2同样会执行和检查
public static void main(String[] args) {
//调用了test方法并返回结果
///boolean bool=test();
//System.out.println(bool);
//让false与上test()方法返回的结果
//System.out.println(false && test());//短路
//System.out.println(false & test());
//前面的表达式为true 但后面的表达式仍然会执行
System.out.println(true | test());//非短路
}
/**
* 一个方法 调用此方法返回true或者false
* @return
*/
public static boolean test(){
System.out.println("test执行了");
return true;
}