第二章 Java变量及基础数据类型

2.1 变量及标识符

2.1.0 Java 标识符规则

  • 定义:有字母、数字、_、$组成的
  • 最基本的定义:以英文字母开头
  • 大小写敏感
  • 标识符不得和关键字重复
  • 不能以数字开头,不能使用空格分隔
  • 长度无限制
  • 常量记得赋初值

命名尽可能使用英文命名,多个单词尽可能采用 驼峰命名法 (首字小写,每遇到一个新单词,首字母大写)
eg:

  1. setTimeOut
  2. myName
  3. helloWorld

2.1.1 注释

  • 注释主要起解释说明的作用、可以有效的增强程序的可读性和可维护性、Java语言支持三种格式注释:单行注释、区域注释、文档化注释。

单行注释:以“’//”开头,到行尾结束 区域注释:以“/ ”开始,** “/”结束,中间可以跨多行注释内容 文档注释:以“/ ”开始,*“**/”结束,中间可以跨行注释内容

  1. // 单行注释
  2. /**/ 会显示绿色的注释
  3. /***/ 文档注释,会显示蓝色的注释

2.1.2 变量的定义

一、变量是在程序运行的过程中,其值可以改变的量

  1. 变量的定义由变量类型变量名(标识符)
  2. 变量的声明就是一条完整的 Java语句,必须在结尾处用分号

eg:

int number; //定义一个整形变量

二、 什么是标识符?

  1. 标识符由字母、数字、下划线(_)和美元符号($)组成
  2. 标识符不能是Java关键字和保留字、但可以包含其内
  3. 标识符大小写敏感
  4. 标识符没有长度限制
  5. 标识符不能有空格

eg:

width、heigh、userName、_sys_sar、$change

QQ截图20200324085429.png

2.2 数据类型

2.2.1 数据类型

image.png

Java数据类型中分为 基本数据类型 引用数据类型 两大类

  • 基础数据类型 (8种)
    整形:byte、short、int、long(整数) —> 默认值 0
    浮点型:float、double(带小数点的数值类型) —> 默认值 0.0
    字符型:char(使用单引号【’】包含的字符) —> 默认值 “\u0000” (Java 10)
    布尔型:boolean(使用true or false表示的数据值)—> 默认值 false
  • 引用数据类型
    • 除了 基础数据类型 之外都是 引用类型
    • 包括 API 中的类:比如 String、File
    • 也包括自定义的类,比如 Person,Student
    • 数组 int [], String [], 接口等等

整形数据范围 byte < short < int < long
类型 存储需求 取值范围
byte(位) 1字节 -128 ~ 127(-2^7 - 2^7 -1)
short(短整型) 2字节 -32,768 ~ 32767
(-2^15 - 2^15 -1)
int(整数) 4字节 -2,147,483,648 ~ 2,147,483,647 (20 亿左右) (-2^31 - 2^31 -1)
long(长整数) 8字节 -9,223,372,036,854,775,808 ——9,223,372,036,854,775,807
(-2^63 - 2^63 -1)
char(字符) 16 0~65536 (‘\u0000’~ ^\uFFFF’)

浮点型
类型 存储需求 取值范围
float(单精度) 4字节 大约 士3.40282347E+38F(有效位数6~7位)
double(双精度) 8字节 大约 士1.79769313486231570E+308(有效位数15位)

不同的类型有不同的范围的数据

  • 描述数字,首选 int(整数)、double(小数)
  • 数据传输或者进行文字编码转换使用 byte(类型) 【二进制处理操作】
  • 处理中文时,最方便的操作的是使用字符 char 来完成 (可选概念)
  • 描述内存或者文件大小,描述主键列(自动增长:使用 long)

2.2.2 基本数据类型的使用

  • 变量的初始化,给一个变量赋初值

声明了一个变量之后,必须利用赋值语句进行初始化

eg:整形使用
public class Test{
     public static void main(String [] args){
        int number=10;//number被赋值为整数10
        //这句话的意思是,声明了一个 int 类型变量的数据,变量名为,number,把10赋值给number
    }
}

eg:浮点数使用

建议使用 double 类型(数据类型转换【小类型 —> 大类型转换】)

public class Test{
     public static void main(String [] args){
        double x = 5.5;// 定定义一个浮点数类型
        int x=10,y=2;
        System.out.print(x/y);//得到 5
        System.out.print((double)x/y);//得到 5.0  因为类型转换的
    }
}

eg:字符变量 (编码问题 —— 看 1.2.5)
public class Test{
     public static void main(String [] args){
        char a = 'A';
        System.out.print(a);//打印 a
    }
}

在任何编程语言中,字符都可以与 int 进行相互转换

eg:布尔数据 (boolean 变量进行变量定义)
  1. 两种状态 : true、false
  2. Java 中的布尔类型具有特定含义,不像其他语言可以通过 0 表示 false ,其他表示 true
    public class Test{
      public static void main(String [] args){
         boolean flag = true;
         if(flag){
             System.out.print("咿呀咿");//打印 咿呀咿
         }
     }
    }
    
    Tips: 变量必须赋值之后才能使用

    2.2.3 引用数据类型使用

  • 引用数据类型使用的场景与基本数据类型 完全一样
    • 作为属性的类型
    • 作为方法的返回值类型使用
    • 作为方法的形式参数类型使用
  • 应用类型的赋值
    • 引用类型都是对象,所以赋值都是使用 new 调用构造方法进行赋值
    • 例外:String 类可以直接使用 = 赋值
      eg:String 字符串 (双引号)
  1. String 类的存在,可以用普通字符串形式进行赋值
  2. Java 中,数据范围大的数据类型与数据范围小的数据类型进行运算的时候,会自动转换为大类型,比如double 类型和 int 类型计算,结果会变成double类型,如果这两者和String 运算,就会变成 String 类型
  3. 如果是 char 类型,必须使用 单引号

    public class Test{
      public static void main(String [] args){
         String str = "hello World";
         System.out.print(str/打印 hello World
    
         //字符串的拼接使用 + 即可实现,代表连接字符串, ‘+’ 现在有两个含义,一个是数学运算的加减法,一个是字符串拼接
            String s = "1" + str;
         System.out.print(str/打印 1ello World                 
     }
    }
    

2.2.4 基本类型 与 引用类型的区别

基本数据类型 引用数据类型
概念 变量(单纯的值) 对象 (引用)
存储位置 在栈中存值 栈中存引用,在堆中存具体对象的属性值
赋值方式 直接赋值 new、String类 和 包装器类可以直接赋值

2.2.5 转义字符

比如

  1. TAB (\t)
  2. 换行 (\n)
  3. 打印双引号 (\”)
  4. 打印单引号(\’).

    2.2.6 数据类型转换

Java中的数据类型转换分为:自动类型转换(隐式类转换)和强制类型转换(显示类型转换)两种,小范围数据会向大范围数据转换

public class Test{
     public static void main(String [] args){
        int a=65;
        char b=(char)a;// 得到 A
    }
}

无标题.png
Tips:字符和数字类型布尔类型不能随意转换

常见的编码(ASCLLL 码):
  1. 大写字母的范围:’A’ (65) ~ ‘Z’(90);
  2. 小写字母的方位:’a’(97) ~ ‘z’(122);
  3. 数字字符:’0’(48) ~ ‘9’(57)

注意:
  1. 大小写字母转换,ascll 码相差 32
  2. Java 中的 char 类型可以保存中文字符 (unicode 十六进制,它可以保存任意文字内容,使得程序开发更容易)
  3. 数据类型转换,高精度向低精度转换 会丢失出现精度问题

    2.3 成员变量 和 局部变量

    2.3.1 概念及区别

  • 在类中位置不同
    • 成员变量 类中方法外
    • 局部变量 方法内或者方法声明上
  • 在内存红位置不同
    • 成员变量 堆内存
    • 局部变量 栈内存
  • 声明周期不同
    • 成员变量 随着对象的存在而存在,随着对象的消失而消失
    • 局部变量 随着方法的调用而存在,随着方法的调用完毕而消失
  • 初始化值不同
    • 成员变量 有默认的初始值
    • 局部变量 没有默认的初始值,必须先定义、赋值、再使用

      2.3.2 实例

public class People{
     int num; // 成员变量 = 属性值,放在;类之外

    void test(int n1) { // 局部变量,只能在方法内部使用
        int n2 = 1;
    }

}

2.4 补充扩展

2.4.1 数据溢出问题 (补充)

2019年11月12日17:06:40 更新

public class Test{
     public static void main(String [] args){
        int a=Integer.MAX_VALUE;// a = 2,147,483,647  获取最大值
        System.out.print(a+1); // 得到-2,147,483,648
        // 一般防止溢出,要提前估算好数据范围,换更大的数据范围表示,使用 long类型
    }
}

2.4.2 提问

  1. 下面哪个不是引用类型 (D 【其他的都是对象】)
    1. String
    2. Double
    3. Float
    4. float