3.10Java基本数据类型

3.10Java基本数据类型

今日学习内容目录

  1. Java基本数据类型

  • 内置数据类型

  • 引用数据类型

  1. Java变量类型

  • 类变量

  • 实例变量

  • 局部变量

  1. Java修饰符

  • 访问修饰符

  • 非访问修饰符


Java基本数据类型

再介绍基本数据类型之前先讨论Java数据类型有什么作用?

变量与内存的关系:

  1. 当创建变量的时候需要在内存中申请空间

  2. 变量类型不同分配的存储空间大小不同

  3. 分配的空间只能用来存储该类型的数据

变量的存储位置问题

这里又会涉及到存储位置的问题,一个变量的存储位置可以是寄存器(register),也可以是堆栈(stack---位于RAM中),还可以是堆(heap---内存池,也位于RAM中),那么到底会存在哪?

对于基础类型的变量和常量而言:

  • 变量和引用存储在栈中

  • 常量存储在常量池中

Java两大数据类型
内置数据类型

Java语言提供了八种基本数据类型。六种数字类型(四个整数型,两个浮点型),一个字符类型,还有一种布尔型

  • 整数型

    • byte

      • 8位(一个字节)、有符号、以二进制补码表示的整数

      • 用在大型数组中节约空间,主要代替整数。byte变量占用的空间只有int类型的四分之一

      • 默认值是0

    • short

      • 16位(2个字节)、有符号、以二进制补码表示的整数

      • 一个short变量是int型变量所占空间的二分之一

      • 默认值是0

    • int

      • 32位(4个字节)、有符号、以二进制补码表示的整数

      • 整型变量默认为int类型

      • 默认值是0

    • long

      • 64位(8个字节)、有符号、以二进制补码表示的整数

      • 用在比较大整数的系统上

      • 默认值是0L

      • 表示方法:Long = 10000L(两个点:第一个是大写的"L"字母,第二个是再常量后加"L"字母表示long型)

  • 浮点型

    • float

      • 单精度、32位、符合IEEE754标准的浮点型

      • 存储大型浮点数组的时候可节省内存空间

      • 默认值是0.0f

      • 不能用来表示精确的值,如currency---小数点后几位忘记了,听马士兵教程

      • 举例:float f1 = 234.5f

    • double

      • 双精度、64位、符合IEEE754标准的浮点型

      • 浮点数的默认类型是double类型

      • 不能用来表示精确的值,如currency

      • 默认值是0.0d

      • 举例:double d1 = 123.4

  • 布尔型

    • boolean

      • 表示一位的信息

      • 两个值

        • true---为真

        • false---不为真

      • 只作为一种标志来记录true/false情况

      • 默认值False

      • 举例:boolean one = true;

  • 字符型

    • char

      • 单一的、16位(2个字节)、Unicode字符:

      • Min_value = \u0000(即为0)

      • Max_value = \uffff(即为65535)

      • char数据类型可以存储任何字符

      • 举例:char letter = 'A';

一个字节八位

这些内置数据类型的最大最小值没必要去记忆,Java已经给了出来。具体的查询方式

public class PrimitiveTypeTest{
   publc static void main(String[] args){
       System.out.println("数据类型".size)
       //输出的是数据类型的二进制位数
       System.out.println("数据类型".Max_value);
       //字符的查询方式
       // char  
       System.out.println("基本类型:char 二进制位数:" + Character.SIZE);  
       System.out.println("包装类:java.lang.Character");  
       // 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台  
       System.out.println("最小值:Character.MIN_VALUE="  
               + (int) Character.MIN_VALUE);  
       // 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台  
       System.out.println("最大值:Character.MAX_VALUE="  
               + (int) Character.MAX_VALUE);  
  }
}

Float和Double的最小值和最大值都是以科学记数法的形式输出的,结尾的"E+数字"表示E之前的数字要乘以10的多少次方。比如3.14E3就是3.14 × 103 =3140,3.14E-3 就是 3.14 x 10-3 =0.00314。

实际上,JAVA中还存在另外一种基本类型 void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。

整体情况如图所示

 

public class Test {
   static boolean bool;
   static byte by;
   static char ch;
   static double d;
   static float f;
   static int i;
   static long l;
   static short sh;
   static String str;

   public static void main(String[] args) {
       System.out.println("Bool :" + bool);
       System.out.println("Byte :" + by);
       System.out.println("Character:" + ch);
       System.out.println("Double :" + d);
       System.out.println("Float :" + f);
       System.out.println("Integer :" + i);
       System.out.println("Long :" + l);
       System.out.println("Short :" + sh);
       System.out.println("String :" + str);
  }
}
/*
上面的代码是先用static关键字+每个数据类型的默认值作为返回值---因为没有给数据类型赋予常量
*/

 

引用数据类型

引用数据类型的几个特点

  • 引用类型的变量类似C/C++的指针。其特点是:

    • 引用类型指向一个对象,指向对象的变量是引用变量

    • 变量再声明时被指定为一个特定的类型,如:Employee、Puppy等。

    • 变量一旦声明后,类型不能被改变

  • 对象、数组都是引用数据类型

  • 所有引用类型的默认值都是Null

  • 一个引用变量可以用来引用任何与之兼容的类型---未理解其含义

  • 举例:Site site = new Site("Runoob")


Java常量

常量在程序运行时是不能被修改的

特点:

  • Java中使用final关键字修饰常量,声明方式和变量类似

  • 通常用大写字母表示常量,下面的PI表示的就是常量

    • final double PI = 3.1415927;
  • 字面量可以赋给任何内置类型的变量

    • byte a = 68;
      char a = 'A';
  • 当使用字面量时,前缀0表示八进制,前缀0x代表16进制

    • int decimal = 100;//这个是十进制数
      int octal = 0144;//这个是八进制数,因为前面有"0"前缀
      int hexa = 0x64;//这个是十六进制数,因为前面有"0x"前缀
  • Java的字符串常量包含在两个引号之间的字符序号

    • "Hello World"
      "Two\Ulines"
      "\"This is in quotes\""
  • 字符串常量和字符常量都可以包含任何Unicode字符

    • char a = "\u0001";
      String a = "\u0001";

下面是Java语言支持的一些特殊的转义字符序列

 

由于自动类型转换涉及到对象的概念,后面学习到对象的内容再回来学习

 

posted @ 2021-03-11 09:18  俊king  阅读(76)  评论(0)    收藏  举报