> 文档中心 > 【入门者学习的Java的数据类型】

【入门者学习的Java的数据类型】

大家一起来学Java

  • Java的一些基础知识
  • 1 数据类型
    • 1.1 变量与类型
      • 1.1.1 整型变量(int)
      • 1.1.2 长整型变量(long)
      • 1.1.3 浮点型变量(float、double)
      • 1.1.3 字符型变量
      • 1.1.4 字节型变量
      • 1.1.5 短整型变量
      • 1.1.6 布尔型变量
      • 1.1.7 字符串变量
      • 1.2 变量的作用域以及命名规则
      • 1.2.1 变量的作用域
      • 1.2.2 变量的命名规则

Java的一些基础知识

在学习Java之前,首先了解一下Java的源文件,后缀名为.java的文件就是 java的源文件(是面向程序员的,也就是程序员编写是代码)。

源代码在计算机上执行的时候,分为两步:

  1. 编译阶段

    javac name.java 

    javac*.java 的源文件编译为 *.class 文件。

    那可能就有人问了,javac*.class是什么啊?

    答案就是✒

    • javac是程序开发的编译工具

    • *.class文件是面向jvm的一个文件类型

  2. 执行阶段

    java name.class

    执行过程中,JVM会将编译后的class文件加载到内存中,将字节码翻译为机器码运行。

    • JVM(Java Virtual Machine) 是JRE的一部分,它是一个虚拟出来的计算机,是通过在实际是计算上仿真模拟各种计算机功能来实现的

那么JDKJRE又是什么呢?

JDKJava的开发程序包,包含了JRE,还具备一些程序开发所必须的工具,Javac-编译工具,jstack-查看JVM的堆栈内存情况

JRE: 使用Java开发的系统要运行起来所必备的环境

在Java中,一切皆对象,所以方法和属性都需要放在类中进行定义

class 关键字定义的就是类

但是,一个源文件中只能存放一个主类,即public class定义的类,并且该类的名称必须与源文件的名称保持一致,其他的普通类(不使用public关键字定义的类)


Java中对于字母的大小写是完全敏感的,要特别注意

1 数据类型

1.1 变量与类型

Java和C++ 都属于强类型的语言,定义一个变量时,必须指定这个变量的类型,这个变量在之后的赋值过程中,只能赋值为相应类型的值。

数据类型分为8大基本类型以及引用数据类型(数组、类、接口),基本类型的名称都是纯小写的英文单词,类名称都是首字母大写的

public class Test{ //Test 就是类名称,{}里面的就是一个类    public static void main(String[] args){ System.out.println("hello world");    }}

1.1.1 整型变量(int)

使用int关键字来定义一个整型变量,int定义的变量大小为4字节(4byte),并且与操作系统和JVM版本无关.

int a = 10; //声明了一个变量,它的名字是a,它的类型为int,初始化变量为10。int a;      //声明了一个变量a,它的类型为int,没有进行初始化

在Java中变量在定义时可以不进行赋值,但是一般推荐定义变量时进行初始化。

注意:在java中,所有数据类型都有默认值,如果定义之后没有进行初始化的话,在使用时会调用它的默认值。(只存在于类变量中,方法中的局部变量不存在默认值,会报错)

public class Test {    int a;    public static void main(String[] args){ int b; System.out.println(new Test().a);//输出为0 System.out.println(b);    }}

此时会提示:
报错


在这里需要注意一个点,byte 就是字节,

1 byte = 8 bit,二进制中的每一位就是一个bit

那么8bit也就是两个字节能表示多大的数?

8bit也就是8位二进制数,在计算机中存储的方式是补码的形式,由于最高位代表符号位,0代表正数,1代表负数。

则最大数是 01111111,也就是
2 0 ∗1+ 2 1 ∗1+ 2 2 ∗1+ 2 3 ∗1+ 2 4 ∗1+ 2 5 ∗1+ 2 6 ∗1=> 2 7 −1=1272^0*1 + 2^1*1 + 2^2*1 + 2^3*1 + 2^4*1 + 2^5*1 + 2^6*1 = >2^7 -1 =127 201+211+221+231+241+251+261=>271=127
注意:为什么是
2 7 −12^7-1 271
因为忽略掉符号位的概念,最大数加一就是 10000000,也就是 2^7,所以最大数就是2^7-1。

最小数也就是 1000 0000(补码形式),但是这个值是补码的形式,换为原码就是末位减一,数值位取反,即1000 0000(原码形式), -2^7 = -128

所以,int类型有4字节,32位,范围在(-2^31 ~ 2^31-1)。


public class Test {    public static void main(String[] args){    //String是引用类型 System.out.println(Integer.MAX_VALUE); //Integer是int的包装类 System.out.println(Integer.MIN_VALUE);    }}

输出是:

2147483647 //2^31 -1-2147483648 //-2^31

所以的基本类型都有对应的类的类型

int     -> Integer    //Integer是int的包装类shout   -> Shoutbyte    -> Bytelong    -> Longflaot   -> Floatdouble  -> Doublechar    -> Characterboolean -> Boolean

8大基本类型中,只有**intchar**类型的包装类拼写比较特殊,其他的包装类都是首字母大写。

1.1.2 长整型变量(long)

long:8字节,它的大小已经足够日常所用了

范围是 -2^63 ~ 2^63-1

long a = 10L; // 必须要加L或者l,表示这个值为long类型的值

在这里简单介绍一下什么是字面量?

  • 程序中直接写出来的值,称之为字面量
  • 200 整型字面量,默认都是int
  • ‘a’ 字符字面量
  • 90.5 浮点数字面量,默认是double
  • “姓名” 字符串字面量,默认是String类型

1.1.3 浮点型变量(float、double)

float:4字节(单精度浮点数),极少使用

double:8字节(双精度浮点数)

**注意:**在Java中直接写出来的小数就是double,浮点数字面量默认类型就是double

float a = 10.4F; //或者加f,声明此时为float类型double b = 10.5;

下面看这个例子

public class Test {    public static void main(String[] args){ double a = 2.1; double b = 3.1; System.out.println(a * b);    }}

它的输出结果是

6.510000000000001

那么问题来了,为什么后面有这么多位0,最后一位是1呢?

原因就是 计算机的内部只能存储一大堆的0和1,浮点数在计算机内部实际上是通过整数模拟的,所以会有一定的偏差.

我们一般有两种解决办法:

  1. 仍然使用double,只看小数点后6位,
  2. 使用BigDecimal类来代替double使用

1.1.3 字符型变量

char: 2字节 范围是 [-2^7 ~ 2^7-1]

Java中的字符集默认为Unicode编码,支持地球上的所有语言, 使用’ ’ 括起来的值都是字符字面量,默认都是char类型

1.1.4 字节型变量

byte : 1字节 范围是 [-2^3 ~ 2^3-1]

一般用于文件或网络传输中

1.1.5 短整型变量

short : 2字节 范围是 [-2^15 ~ 2^15-1]

因为short类型的数据范围较小,使用的较少

1.1.6 布尔型变量

boolean

布尔类型只有两种,真就是True,假就是False;与0或1 没有任何关系。

boolean 和 其他类型之间不能进行强制类型转换

1.1.7 字符串变量

String 是引用数据类型,不是8大基本类型。

String name = "姓名";//此时 使用" "中间的内容就称为字符串字面量,默认是String类型

java中,任何数据类型只要和字符串 进行 + 的运算,都会把其他数据类型转变为字符串,然后进行字符串的拼接操作。

要注意,进行 + 运算时的优先级

public class Test {    public static void main(String[] args){ String a = "年龄: "; int age = 18; System.out.println(a + age*2); //由于是先运算 age*2,所以拼接时转变为字符串的整型为 36    }}
//运算结果为年龄: 36

再看这个代码

public class Test {    public static void main(String[] args){ String a = "年龄: "; int age = 18; System.out.println(a + age + 2); //这里是age 先与字符串进行 + 运算,age变为字符串进行拼接操作,又继续拼接2    }}
//运行结果为年龄: 182

补充

常见的几个转义字符有

转义字符 解释
\n 换行符
\t 水平制表符
\’ 输出为 单引号
\" 输出为 双引号
\\ 输出为 反斜杠

注意:当遇到一些特殊字符时,需要进行转义输出,转义输出就是告诉编译器,对这个字符不要做特殊处理。\ 表示转义字符

1.2 变量的作用域以及命名规则

1.2.1 变量的作用域

变量的作用域就是看这个变量起作用的区域在哪里,这个区域就是它定义时所在的大括号{}。出了变量的作用域后,变量就会被销毁。

1.2.2 变量的命名规则

必须要遵守的:

  1. 一个变量名只能包含数字,字母,下划线

  2. 数字不能开头

  3. 变量名是大小写敏感的,就是name 和 Name 是两个不同的变量

  4. 不能使用Java中的关键字作为变量命名,例如:int class double new this 都是Java中的关键字

  5. 虽然语法上来说允许使用中文或者美元符号($)命名变量,但是强烈不推荐这样做

我们还要养成良好的变量命名规则(不强制):

  1. 变量名要具有描述性
  2. 尽量不要使用拼音作为变量名
  3. 变量名的词性推荐使用名词
  4. 命名规则推荐使用小驼峰命名法,当一个变量名由多个单词构成的时候,除了第一个单词之外,其他单词的首字母大写

大家看完点个赞怎么样!!!