java 很在意类型!!!

变量的本质

从本质上看,变量代表了一段可操作的内存,也可以认为变量是内存的符号化表示。当程序中需要使用内存时,可以定义某种类型的变量。此时编译器根据变量的数据类型分配一定大小的内存空间。程序就可以通过变量名来访问对应的内存了。

变量的生命周期

声明 > 使用 > 销毁。

变量的作用域

  1. 局部变量:在 Java 中,局部变量只能在声明它的方法、代码块或循环语句中使用。局部变量在声明时必须初始化,它们的作用域从声明它们的位置开始,到它们所在的代码块结束。当代码块结束时,局部变量的生命周期也随之结束,它们所占用的内存空间也会被释放。
  2. 成员变量:在 Java 中,成员变量是定义在类中的变量,它们可以被类中的任何方法使用。成员变量的作用域从定义它们的位置开始,直到它们所属的类被销毁。成员变量可以被定义为静态变量,这样它们就成为了类变量,可以被类的所有实例共享。
  3. 方法参数:方法参数的作用域与局部变量相同,从方法声明处开始,到方法结束。方法参数也必须在声明时进行初始化。
  4. 块级作用域:块级作用域可以通过在代码块中使用花括号来创建,它可以用来限定局部变量的作用域。块级作用域中声明的变量只在该块内部可见,超出该块的范围后就无法访问。

    变量可以存储2种东西?

    基本类型: Boolean、char、Byte、Short、Int、long、float、double。
    引用类型:String、Double、Float、Integer、BigInteger等。

    变量的命名规范

    • 必须以字母、下划线_或美元符$ 开头。不能用一个数字作为开头。
    • 第一个字符后面也可以使用数字。
    • 不能与java关键字命名。

      数组

      数组是一个对象,尽管他是一个基本类型的数组。

      int [] nums;
      nums=new int[7];

      Java中变量的数据类型

      整型变量

      byte:1 个字节 、8位 , 取值范围:2-128 到 127 。默认值:0
      short : 2字节、16位,取值范围:-32768到32767。默认值:0
      int :4 字节、32位,取值范围:-2147483648 到 2147483647。默认值:0
      long: 8字节、64位,取值范围: -9223372036854775808 到 9223372036854775807。 默认值:0L
      image.png
      image.png|321
      |313
      image.png|325

      浮点型变量

      float : 4字节、32位 取值范围:3.4e-038 到 3.4e+038 默认值:0.0f
      double:8字节、64位,取值范围: 1.7e-308 到 1.7e+308。 默认值:0.0d
      image.png
      image.png

1、符号部分(S)
0-正 1-负

2、阶码部分(E)(指数部分)

  • 对于float型浮点数,指数部分8位,考虑可正可负,因此可以表示的指数范围为-127 ~ 128
  • 对于double型浮点数,指数部分11位,考虑可正可负,因此可以表示的指数范围为-1023 ~ 1024

3、尾数部分(M)
浮点数的精度是由尾数的位数来决定的:

  • 对于float型浮点数,尾数部分23位,换算成十进制就是 2^23=8388608,所以十进制精度只有6 ~ 7位;
  • 对于double型浮点数,尾数部分52位,换算成十进制就是 2^52 = 4503599627370496,所以十进制精度只有15 ~ 16
    所以对于数值0.99999999f,很明显已经超过了float型浮点数据的精度范围,出问题也是在所难免的。

    字符型变量

    char:2字节 ,表示Unicode 字符,可以存储任何一个 Unicode 字符。默认值:\u0000

unicode 码表:https://www.rapidtables.org/zh-CN/code/text/unicode-characters.html

char name ='王';
char c = 'A';
char max=65535;
char demo='ﴉ';

boolean: 1 个字节,布尔类型,只有两个取值:true 和 false。默认值:false