Java基础更上一层楼

Java基础之更上一层楼

类型转换

运算中,不同类型的数据先转化为同一类型,然后再进行运算

由低------------------------------------------>高进行转化
byte,short,char——>int——>long——>float——>double
//小数优先级高于整数优先级
强制转换

转换公式:
(类型)变量名

适用于由高到低的转换,例如

int i = 77;
byte b =(byte)i;
自动转换

直接转就行了,不需要加括号啥的,适用于从低到高的转换

例如

int i =128;
double b = i;//直接输出128.0

注意点

  1. 不能对布尔值进行转换
  2. 不能把对象类型转换为不相干的类型
  3. 注意内存溢出或者精度问题
    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
posted @ 2022-03-15 23:19  凹尾狸花鱼  阅读(35)  评论(0)    收藏  举报