• 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

  • 相关阅读:
    【散列表】拉链法以及线性探查法
    【Spring】第一个hello world程序
    『Java基础』基本数据类型和包装类
    二进制、八进制、十进制、十六进制互转
    [MyBatis]缓存机制
    Ora-01830 日期格式图片在转换整个输入字符串之前结束
    leetcode1584. 连接所有点的最小费用(最小生成树算法的应用)
    VS安装SVN插件
    Winform打开不窗体设计器解决方法(Winform以普通C#类显示,打开不了设计器)
    Oracle修改System密码并解锁
  • 原文地址:https://www.cnblogs.com/vae-469395/p/13635764.html
Copyright © 2020-2023  润新知