一、数据类型、变量、常量

强类型语言和弱类型语言

  • 强类型语言
    • 要求变量的使用要严格符合规定,所有变量都必须先定义(包括类型和值)后才能使用
    • 规定了对应的变量类型就要输入对应的数据类型
    • 安全性较高,速度慢
  • 弱类型语言
    • 变量的使用要符合规定,但是不用事先规定变量类型

基本数据类型和引用数据类型

  • 基本类型(primitive type)
    • 数值类型(byte,short,int,long,float,double),
    • 其中long类型的数据要在数字后面加上L用以区分;float类型的数据要在后面加上F
    • char类型数据
    • boolean类型(这种数据类型只占一个bit)
public class Hello{
    public static void main(String[] args){
        //整数类型
        byte num1 = 127; //byte类型的数据占一个字节
        short num2 = 200; //short类型的数据占两个字节
        int num3 = 800; //int类型的数据占4个字节
        long num4 = 1000L; //long类型的数据占8个字节,而且long类型的数字一般都会在数字后面加上一个L,加以区分

        //浮点数类型
        float num5 = 1.45F; //float的数据占4个字节,而且要在值的后面加上F用来区分这个是float类型的数据
        double num6 = 1.233; //double类型的数据占8个字节

        //字符类型
        char str1 = 'A'; //char类型的数据占2个字节,而且char类型赋值一个字符
        
        //布尔类型
        boolean b1 = true;
        boolean b2 = false;
    }
}
  • 引用类型(reference type)

    • 接口
    • 数组
  • 引用类型(reference type)

    • 接口
    • 数组
  String str2 = "我是一串字符"; //String是一个类,并不是关键字,因此他是属于引用类型的变量

基本数据类型的更多知识点

  • 整数扩展
    • 对于整数,有二进制,十进制,八进制,十六进制,在java中有他们各自的表达方式
    • 对于数值类型的变量,默认值是0 、0.0
    • 对于char类型的变量,默认值是u0000,也就是什么都没有
    • 对于其他引用类型的变量,默认值是null
public class Hello{
    public static void main(String[] args){
        int num1 = 0b10; //0b开头表示2进制
        int num2 = 10;
        int num3 = 010; //0开头表示8进制
        int num4 = 0x10; //0x开头表示16进制
    }
}
  • 浮点数扩展
    • 对于浮点数,因为他们有些浮点数并不是有限的,所以表达起来都是取近似于这个数的数,所以在平时写程序的时候,我们要避免浮点数之间进行比较!! 如果要进行比较的时候要用BigDecimal类来进行运算。
  • 字符扩展
    • 在java中可以进行强制转换,转换的是对应的字符在unicode码中的位置。
public class Hello{
    public static void main(String[] args) {
        int a = 97;
        char b = '来';
        int c = '\u0061';
        int d = 97;
        System.out.println((char)a); //将数字强制转换成字符
        System.out.println((int)b); //将字符强制转换成数字
        System.out.println((char)c); //用编码序号来获取对应的编码字符
        System.out.println(a==d);

    }
}

变量的作用域

  • 类变量
    • 从属于类的变量,在类里面可以直接引用
  • 实例变量
    • 实例变量,需要实例化一个对象才能够引用
  • 局部变量
    • 局部变量只能在其定义的函数内进行使用
public class Hello{
    static int a ; //类变量
    String b ; //实例变量,需要通过实例化一个对象来引用
    //定义的类变量和实例变量不需要初始化也能够使用,他们会是默认值
    //数值型的变量默认是 0 或者 0.0,字符型的是Null
    //除了基本的数据类型,其他的默认值都是null
    //布尔型的数值默认是false
    public static void main(String[] args) {
        double c = 1.456; //局部变量
        Hello h = new Hello();
        System.out.println(a);
        System.out.println(h.b);

    }
}

常量

  • 常量(Constant):初始化(initialize)后不能再改变值!,不会变动的值

  • 常量可以理解成一种特殊的变量,他的值被设定后,在程序的运行过程中不允许被改变。

    final 常量类型 常量名=值
    final double PI = 3.14;
    
  • 常量名一般使用大写字符

变量和常量命名规范

  • 所有变量、方法、类名:见名知意
  • 类成员变量:首字母小写和驼峰原则:monthSalary,除了第一个单词以外,其他单词的首字母要大写
  • 局部变量:首字母小写和驼峰原则
  • 常量:大写字母和下划线:MAX_VALUE
  • 类名:首字母大写和驼峰原则:Man,Women
  • 方法名:首字母小写和驼峰原则:go(),goGo()

不同作用域的变量的内存分配

posted @ 2021-03-10 22:42  煎蛋真的是太美味了  阅读(41)  评论(0)    收藏  举报