day05

day05

变量

变量定义:只能以大小写字母、$、_开头定义。

变量转换

低 --> 高:byte,short,char --> int --> long --> float -->double

强制转换:高容量向低容量转换,(类型)变量名

int i = 128;
byte b = (byte)i;
System.out.println(i); 
System.out.println(b);	//输出-128,这还是因为内存溢出所以输出的不是128.byte占一个字节范围,-128~127

自动转换:低容量向高容量转换

int i = 23;
double d = f;
System.out.println(f);
System.out.println(d);	//输出23.0

char c = 'a';
int d = c+1;
System.out.println(c);	//a
System.out.println((char)d);	//b 

注意:

1. 不能对布尔值进行转换,布尔值变量只有两个值,false、true。

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

3. 在把高容量变量向低容量变量转换时要强制转换。

4. 在转换过程中还可能出现内存溢出或精度问题。

精度问题实例

System.out.println((int)23.7);		//23
System.out.println((int)-45.34);	//-45 

当操作数比较大时,注意溢出问题:

int money = 10_0000_0000;	//JDK7新特性,数字之间可以用下划线分割,下划线不会被输出。
int year = 20;
int total = money*year;
System.out.println(total); 	//-1474836480	计算的时候溢出了,int占四个字节范围,最大21亿。

long total2 = money*year;
System.out.println(total);	//-1474836480	输出溢出了,虽然使用long变量但是输出还是不是200亿,以为两个int变量相乘,默认int,在转换前就已经存在问题。
long total3 = ((long)money)*year;	//long total3 = money*((long)year)	先将一个数转换为long,之后相乘的一个int会自动转换为long。
System.out.println(total3);		//200亿	注意L l,尽量用L表示。	

变量作用域

1. 类变量

类变量定义时,需要加上static关键字。类变量的生存周期在整个类中,可在类的方法内直接调用。

public class Demo08 {
    static double salary = 2500;	
}

2. 实例变量

实例变量从属于对象,定义在方法的外面,类的里面。实例变量如果不初始化,输出的会是默认值,整数型、小数型变量的默认值是0 0.0等,除了八大基本数据类型外其他类型默认值是null。(char类型的默认值好像不输出)

public class Demo08{
    int age;
    String name;
    public static void main(String[] args){
        Demo08 demo08 = new Demo08();
        System.out.println(demo08.age);
        System.out.println(demo08.name);
    }
}

3. 局部变量

局部变量必须声明和初始化。

局部变量如果定义在方法内,则生存周期只在定义的方法中,不可跨方法调用。


public class Demo08 {

    //类变量 static
    static double salary = 2500;

    //static、final、public、private等都是修饰符,修饰符是没有先后顺序区别的。
    //常量 变量名用大写字母表示 final
    static final double PI = 3.14;  //final static double PI =3.14; 效果是一样的

    //属性:变量

    /*实例变量:从属于对象;(定义在方法的外面,类的里面,有点类似于c的全局变量)
    实例对象如果不初始化,整数型、小数型输出的是0 0.0等,char类型好像不输出。除了基本类型其他类型输出null。
    布尔型变量的默认初始值是false
    */
    boolean name;
    int age;

    //main方法
    public static void main(String[] args) {
        //局部变量;必须声明和初始化值
        /*
        int i;
         System.out.println(i); //会报错,因为i局部变量,没有初始化无法输出。
         */
       int i = 10;
       //System.out.println(i);

       //变量类型 变量名字 = new Demo08();
       Demo08 demo08 = new Demo08();   //alt+enter 快捷键可以生成对象。
        System.out.println(demo08.age);     //0
        System.out.println(demo08.name);    //null

        //类变量 static
        System.out.println(salary);

    }

    //其他方法
    public void add() {

        /*
        System.out.println(i);  //报错,因为i只有在main方法里面定义,生存周期也只在main方法函数中。
         */
    }
}

变量的命名规范:

1. 所有的变量、方法和类名定义全都要见名知意。

2. 类名要求首字母大写,然后遵循驼峰原则。

驼峰原则:除第一个单词之外,后面的所以单词首字母大写。

3. 常量要求所有字母大写,多个字母间用下划线间隔。

4.方法名、局部变量、类成员变量则全部首字母小写,然后遵循驼峰原则。

2020 9.8 21:25

上一篇:Day05--数组+变量


下一篇:day05