【Java基本语法03】

Java基本语法03

一、 Java类型转换

java类型转换分为两种,自动转换和强制转换。其中,自动转换是类型由低到高,而强制转换是类型由高到低。强制转换需要注意:

  1. 不能对布尔值进行转换;

  2. 不能把对象类型转换为不相干的类型;

  3. 转换的时候可能出现内存溢出或者精度问题!

    public class demo1 {
        public static void main(String[] args) {
    		int i=128;
    		byte b=i;	
    		System.out.println(b);	//结果不是128,将int类型强制转换为byte型,出现了内存溢出
    
    		System.out.println((int)23.7);	//结果为23,出现了精度问题
    		System.out.println((int)-45.93f);	//结果为-45,出现了精度问题
    		}
    		}
    

二、变量

​ java变量是程序的最基本的存储单元,其要素包括变量名、变量类型和作用域,变量分为类变量、实例变量和局部变量

注意:

  1. 每个变量都有类型,可以是基本类型,也可以是引用类型;

  2. 变量名必须是合法的标识符;

  3. 变量声明是一条完整的语句,因此每一个声明都必须以分号结束;

    public class demo2 {
        static int allClicks=0;         //类变量
        String str="hello world";       //实例变量
        
        public void method(){
            int i=0;        			  //局部变量
            
            //变量类型   变量名字  = new class
            demo2 a=new demo2();			//实例变量的引用
            System.out.println(a.str);		
            
            System.out.println(allClicks);	//类变量的引用
        }
    }
    
    
    1. 局部变量从属于方法,必须声明和初始化;
    2. 实例变量从属于对象,在方法外面,在类里面,需要声明,并且如果不初始化值,就是实例变量类型的默认值(int型默认为0,float、double型默认为0.0,布尔类型默认为false,除了基本类型,其余的默认值都是null,如String);
    3. 与实例变量声明相比,类变量多了”static“关键字,从属于class,与class共存亡。

三、常量

初始化后不能再改变值,不会变动,常量名一般使用大写字符。常量的定义:

  final  常量名=值;
  final double PI=3.14;

常量可以看作是特殊的变量,即值不再改变的变量。定义变量时,变量类型前的都是修饰符,不存在先后顺序。例如类变量的”static final int allClicks=0; “等同于“final static int allClicks=0; ”。

四、变量的命名规范

  1. 见名知意;
  2. 类成员变量:首字母小写和驼峰原则:mouthSalary除了第一个单词以外,后面的单词首字母大写;
  3. 局部变量:首字母小写和驼峰员原则;
  4. 常量:大写字母和下划线:MAX_VALUE;
  5. 类名:首字母大写和驼峰原则:Man、GoodMan;
  6. 方法名:首字母小写和驼峰原则:run() 、 runRun();

五、运算符

  [运算符图谱](https://pica.zhimg.com/v2-13edfee4d82dcf7008a8ef835a6766ea_r.jpg)
  1. 对于单目算术运算符的自增、自减运算,我们要注意“a++”和“++a”的区别,如:

    int a=3;
    int b=a++;		//执行完这段代码后,先给b赋值,再自增。最终结果:b=3,a=4
    int c=++a;		//执行完这段代码前,先自增,再给b赋值。最终结果:a=5,c=5
    
  2. 对于一些特殊的运算,我们会用到math类。比如幂运算,在计算器中,2^3表示为3个2的相乘;在java中,没有此种表示方法,需要用**Math.pow(2,3)**来表示。

  3. 对于位运算符,“&”是按位与,“|”是按位或,“~”是按位取非,“^”是按位异或,“<<”是左移,“>>”是右移。在计算机中,移位计算是最快的。比如要计算一个“2*8=16”的计算题,最快的方式是将其拆成4个2相乘,为什么呢?我们观察一下:

    二进制(计算机) 十进制(计算题)
    0000 0001 1
    0000 0010 2
    0000 0100 4
    0000 1000 8
    0001 0000 16

    可以发现,二进制数字每往左移一位,对应的十进制扩大2倍,同样地,二进制数字每往右移一位,对应的十进制缩小2倍。所以:

    //"2*2*2*2"可以写成"2<<3",运算速度快,因为计算机中都是二进制,做移位运算最快。
    //记住:
    //		<<	*2
    //		>>	/2
    
  4. 对于赋值运算符,“a+=b"等价于"a=a+b",“a-=b"等价于"a=a-b",其余的也是类似。

  5. "拓展一个“字符串连接符”:“+”,***当字符串连接符左右两端只要有一端是“String”类型,就会将另一端强制转换成“String"类型,再进行字符串连接。

    int a=10;
    int b=20;
    System.out.println(""+a+b);		//1020
    System.out.println(a+b+"");		//30
    

    ​ 第一个式子中,第一个”+“左边是一个空字符串,右边是int类型整数,在运算第一个+之前,会将int型的a强制转换成String类型,运算结果是字符串10;在运算第二个+之前,会将int型的b强制转换成String类型,运算结果是字符串1020

    ​ 第二个式子中,第一个”+“是普通的加号,来进行int型的a和b相加,结果是int型的30;在运算第二个+之前,会将左边的int型的30强制转换成String类型,在进行字符串连接,运算结果是字符串30

  6. 对于三元运算符,比如”x?y:z"表达式,表示的含义:如果x==true,则结果为y;否则结果为z。

你可能感兴趣的:(开发语言,java)