【Java学习—(1)入门者学习的Java的数据类型】

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 = 127 2^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 − 1 2^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   -> Shout
byte    -> Byte
long    -> Long
flaot   -> Float
double  -> Double
char    -> Character
boolean -> 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. 命名规则推荐使用小驼峰命名法,当一个变量名由多个单词构成的时候,除了第一个单词之外,其他单词的首字母大写

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

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值