类型转换

范围由低到高:(因为float是小数类型,所以优先级大于整数类型)

byte,short,char—>int —>long—>float—>double

1、强制类型转换:把高容量的转为低容量。

2、自动类型转换:高容量的获得低容量的值。

3、超过范围,内存会溢出;也会出现精度丢失问题。

System.out.println((int)4.5);//double转int:4
System.out.println((int)-455.244f);//float转int:-455

4、数字之间可以是用下划线

int money=10_0000_0000;//"_":不会输出:1000000000

变量作用域*

代码 :

package com.jrx.Java基础Demo;
public class Demo8_19Java基础学习第二天02 {
    //类变量 static
    static double salary=2500;

	//属性:变量

    /*实例变量:从属于对象.如果不自行初始化,这个类型的默认值为0/0.0;
        布尔值的默认值为false;
        除了基本数据类型,其余的默认值为null。
     */
    String name;
    double age;
    
    //main方法
    public static void main(String[] args) {
       //局部变量
        int  i=1;
        System.out.println(i);
        System.out.println("======================================");
        //实例变量:[变量类型 变量名称 =new 变量类型();]
        Demo8_19Java基础学习第二天02 Demo=new Demo8_19Java基础学习第二天02();
        System.out.println(Demo.name);//默认值为null
        System.out.println(Demo.age);//默认值为0.0
        System.out.println("======================================");
        //类变量
        System.out.println(salary);//类变量从属于类
    }
    
    //其他方法
    public  void add(){
    }
}
类变量*static

(JVM中重点讲解) 写在类里面 ,需要 static 关键词 ,类变量从属于类

package com.jrx.Java基础Demo;
public class Demo8_19Java基础学习第二天02 {
    //类变量 static
    static double salary=2500;
    
    public static void main(String[] args) {
       System.out.println(salary);//类变量从属于类 
    }  
}
实例变量

方法的外面,在类里面。变量类型 变量名称 =new 变量类型();

从属于对象.如果不自行初始化,这个类型的默认值为0/0.0; 布尔值的默认值为false;除 了基本数据类型,其余的默认值为null

package com.jrx.Java基础Demo;
public class Demo8_19Java基础学习第二天02 {
      /*实例变量:从属于对象.如果不自行初始化,这个类型的默认值为0/0.0;
        布尔值的默认值为false;
        除了基本数据类型,其余的默认值为null。
     */
    String name;
    double age;
    
    public static void main(String[] args) {
        //[变量类型 变量名称 =new 变量类型();]
        Demo8_19Java基础学习第二天02 Demo=new Demo8_19Java基础学习第二天02();
        System.out.println(Demo.name);//默认值为null
        System.out.println(Demo.age);//默认值为0.0
    }  
}
局部变量

写在方法里面

package com.jrx.Java基础Demo;
public class Demo8_19Java基础学习第二天02 {
    
    public static void main(String[] args) {
     //局部变量
        int  i=1;
        System.out.println(i);
    }  
}

常量*final

常量(constant):静态的,固定不变的。

final 常量名 =值;(eg: final double PAI=3.14;)

package com.jrx.Java基础Demo;
public class Demo8_19Java基础学习第二天03 {
    
    static final double ID=3.14;//static和final的顺序可以任意
    
    public static void main(String[] args) {
        System.out.println(ID);
    }
}

运算符

运算符(operator)

一元运算符

++、- -

a++:执行完成这个代码后,先赋值,再自增

++a:执行这个代码前,先自增,再赋值

(a–和--a原理相同)

//一元运算符
int a=3;
int b=a++;//执行完成这个代码后,先给b赋值,再自增
System.out.println(a);//a=4
int c=++a;//执行这个代码前,先自增,再给c赋值
System.out.println(a);//a=5
System.out.println(b);//b=3
System.out.println(c);//c=5

二元运算符

乘除运算中,结果有小数时,int类型会舍弃小数点后面的数,导致丢失精度,需要提前强转类型

运算时,多个操作数中有至少一个数的类型为Long,则结果为long类型;如果没有Long,结果都为int类型

package com.jrx.Java基础Demo;

public class Demo8_19Java基础学习第二天04 {
    public static void main(String[] args) {
        int i1=2;
        int n1=3;
        System.out.println(i1/n1);//0
        System.out.println(i1/(double)n1);//0.6666666666666666
        //与double t1=i1/n1;效果相同
    }
}

三元运算符

类型 名称 = 判断 ?正确时输出:不正确时输出;

String a= 2==3?"相等":"不相等!";//正确输出相面的,不正确输出后面的
System.out.println(a);//不相等

幂运算*

Math 工具类提供

Math.pow(a,b)进行幂运算:

//        幂运算
        double pow = Math.pow(2, 3);//=2*2*2
        System.out.println(pow);//8

字符串连接符

String , +

/* 字符串连接符:  +,String */
System.out.println(q+w);//50
System.out.println(""+ q+w);//3020    (String类型)
System.out.println(q+w +"");//50      (String类型)

位运算符

& 、| 、^、~、>>、<<、>>>

/*A=0010 1100
  B=0001 1001
   A&B=0000 1000  全1为1
   A|B=0011 1101  有1为1
   A^B=0011 0101  相同为0,不同为1
    ~B=1110 0110  取反
   ----------------------------
   2*8怎么运算最快:2*2*2*2=16
   **进行二进制移动**
   <<:左移: *2
   >>:右移: /2
   */
      System.out.println(2<<3);//==2*2^3=16
      System.out.println(3<<3);//3*2^3=24

逻辑运算符

&&、||、! (与、 或 、非):进行判断使用,结果为true / false

boolean a=true;
boolean b=false;
    System.out.println(b&&a);//false:两个都为真,才是真
    System.out.println(b||a);//true:两个都为假,才是假
    System.out.println(!(a&&b));//true:取反

    int c=5;
    boolean d=(c<4)&&(c++<4);
    System.out.println(d);
    System.out.println(c);//c的值不会增长

    //短路   a&&b:如果a是假的,则不会继续执行到b
    int c1=5;
    boolean d1=(c1<6)&&(c1++<6);
    System.out.println(d1);
    System.out.println(c1);//c1的值会增长

扩展运算符

+=、-=、*=、/=

int q=10;
int w=20;
q+=w;//q=q+w
System.out.println(q);//30