Java基础更上一层楼
Java基础之更上一层楼
类型转换
运算中,不同类型的数据先转化为同一类型,然后再进行运算
由低------------------------------------------>高进行转化
byte,short,char——>int——>long——>float——>double
//小数优先级高于整数优先级
强制转换
转换公式:
(类型)变量名
适用于由高到低的转换,例如
int i = 77;
byte b =(byte)i;
自动转换
直接转就行了,不需要加括号啥的,适用于从低到高的转换
例如
int i =128;
double b = i;//直接输出128.0
注意点
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
- 注意内存溢出或者精度问题
such as
**内存溢出**
int i =128;
byte b=(byte)i;//system后会输出-128,因为byte范围最大到127
//操作数较大的溢出情况
int money =10_0000_0000;//jdk7新特性,数字之间可以用下划线分割
int years = 20;
int total = money*years;//会输出一个负数,这就是溢出问题
//直接long total2 = money*years;还是会输出负数,因为money和years是int类型,结果会先成为int类型,再去转为long。所以在转化之前的结果int就已经是负数了,所以转化为long之后仍然为负数。
long total3 = money*((long)years);//成功输出,先把一个数转化为long
**精度问题**
System.out.println((int)23.7);//double转int,会输出23
System.out.println((int)-45.89f);//float转int,会输出-45
变量
- 每个变量都有类型(基本类型或引用类型)
- 变量名必须是合法的标识符,如不能以#开头等
- 变量声明是一条完整的语句,so,结尾千万千万要以分号;结束
变量作用域
public class Variable{
static int allCliks=0; //类变量
String str="hualalala"; //实例变量
public void method(){
int o =10; //局部变量
}
}
public class Demo{
//属性:变量
//实例变量:类里面,方法外面;从属于对象;如果不自行初始化,会输出这个变量类型的默认值(例如0 0.0,布尔值默认是false,除了基本类型,其余默认值都是null)
String name;
//main 方法
public static void main(String[] args){
//局部变量:必须要声明和初始化值,局部变量的生命周期只在本方法{}这个大括号内,出了这个大括号啥都不是
int i =10;
//变量类型 变量名字 = new Demo();
Demo demo = new Demo();
System.out.println(demo.name) //输出默认值null
//类变量 static,从属于类,跟类共存亡
}
//其他方法
public void add(){
}
}
常量
一种特殊的变量,值被设定后程序运行过程中不允许被改变
final 变量名=值;
final double PI=3.14;
常量名一般使用大写字符
//修饰符不存在先后顺序(变量类型前面的就是修饰符)
static final double PI=3.14;
<=>final static double PI=3.14;
命名
- 所有变量、方法、类名都要做到一目了然,干啥活起啥名
- 类成员变量:首字母小写,后续驼峰原则 monthSalary
- 局部变量:同上,首字母小写和驼峰原则
- 常量:大写字母和下划线 MAX_VALUE
- 类名:首字母大写和驼峰原则:Man,GoodWomen
- 方法名:首字母小写和驼峰原则:run(),runRun()
运算符
- 算术运算符 +,- ,* ,/ ,% , ++ , --
- 赋值运算符 =
- 关系运算符> , < ,>= ,<= ,==, != ,instanceof
- 逻辑运算符 &&,|| ,!
- 条件运算符 ? ,: (x?y:z表示 如果x==true,则结果为y否则为z)
- 扩展赋值运算符 += , -= ,*= ,/=
幂运算 Math.pow(2,3);即2的三次方
位运算符拓展(二进制相关)
- & 都为1才为1,其余情况都为0
- | 如果对应位都为0结果为0,否则为1
- ^ 异或,对应位相同则为0,否则为1
- ~ 取反
- << 左移,相当于*2
-
>> 右移,相当于/2
2*8=16 相当于2*2*2*2
<=> 2<<3
0000 0000 0
0000 0001 1
0000 0010 2
0000 0100 4
0000 1000 8
0001 0000 16

浙公网安备 33010602011771号