Java入门第4节——数据类型和变量

系列连载文章,大家可以从我的专栏学习Java入门基础知识,后续也会有更高级的Java特性、企业级开发框架,也有平常工作中的技术总结和分享,欢迎关注我的CDSN博客。同时可关注微信公众号“Java开发之旅”,获得更多技术资料! 

目录

思考

数据类型and变量?

Java中的四类八种

byte类型

short类型

int类型

long类型

float类型

double类型

boolean类型

char类型

扩展——String类型

小结


思考

通过之前的知识,我们知道计算机执行程序其实就是一个运算的过程,那我们不妨想一想,我们在生活中是怎样进行运算、思考的?

以我们去商店购物为例,我们在挑选商品时,会在大脑中记忆这个商品的价格、保质期、生产厂商等信息,而且在购物行为发生的前后不会忘记这些信息。因为在大脑中记忆了这些信息,所以我们会通过判断厂商、保质期来决定是否购买,同时在结账时我们会计算这些商品的总价格……

上述例子中,拿结账来说,我们只有知道商品的价格,才能在大脑中运算出需要支付多少钱,否则这是不现实的。

同样,在Java程序中,我们如果要进行数据的运算,也要有一个东西能够记录这些数据,不管是临时的或者永久的。那这个东西,专业一点叫做——变量

 

数据类型and变量?

我觉得大家现在肯定对变量有一个模糊的概念了。变量,就是在程序中存储数据的,是我们和程序交互的中介,也是程序和底层计算机交互的中介。变量是可以运算的,是我们程序执行的基础,存储数据的值

在具体的展开变量之前,我们还需要理解数据类型

我们生活中充满着各种数据,一个班级的学生人数、商品的价格、一张人民币的真假、某个人的姓名……我们会将各种数据分类、标记,这将有利于我们对这些数据的处理,比如我们知道只有数字之间才可以进行加减乘除,“ 1 x 2 = 2”但是“1 x 张三”是错误的运算……

那么同样,在Java当中描述数据,要声明这个数据是什么类型的,只有这样Java才能检验你的代码是否合法、数据之间的操作能否被执行。比如你想拿数字1和字符串“张三”相加,得到一个数字,这显然是荒谬的

我举的这四种数据,正好对应Java当中的四类数据类型:整型、浮点型、布尔型、字符型

比如人数只能是整数,所以对应Java当中的整型;价格往往带有小数,对应Java当中的浮点型;人民币要么真、要么假,没有第三种情况,对应Java当中的布尔型;姓名往往由字符组成,对应Java当中的字符型。

再深入一步,将上述四类数据类型进一步划分,又可衍生出八种数据类型,也是Java当中常说的——四类八种。

 

Java中的四类八种

先上图:

 

上图就是Java中所有的数据类型,其中基本类型是Java自带的内置类型,除了这八种以外的所有数据类型都是引用类型,引用类型都是以对象的方式存在,将在以后的章节为大家讲解。

所有的基本类型,组成了四类八种:四类是指整型、浮点型、布尔型、字符型,八种是指byte、short、int、long、float、double、boolean、char

现在,我们就结合变量,将二者一块学习。所以,我们先说一下变量的定义。

在Java当中通过以下语法定义变量并且赋值:

数据类型 变量名 = 值;

当然了,你也可以先声明,然后通过 = 进行赋值:

数据类型 变量名;
变量名 = 值;

在Java当中,所有的变量必须先声明并且赋值之后才能被程序使用,所以变量一定要经过上述两种语法之一进行声明(类的实例变量会有默认值,我们后面会讲到,但是这里并不会)

同时,Java对变量名有严格的要求:

变量名只能以字母、下划线、$开头,并且后面也只能跟字母、下划线、$
变量名不能以数字开头
变量名不得是Java保留字、关键字

Java中的保留字和关键字(图片来源于网络):

 

综上,以下变量名是合法的:

number、count、student、$test、_name、student_name

以下变量名是不合法的:

1name、*test、public、int

byte类型

首先byte属于整型,用于存储整型的数字,而且它也是整型当中取值范围最小的一个,它的取值范围是-128 —— 127。byte类型占8bit位、1字节,经常用于在大型数组、IO流、缓冲区中节约空间,因为它只占1字节,是int类型的四分之一。

byte类型的定义:

public class Hello {
​
    public static void main(String[] args) {
        /*
        *   变量的定义语法:
        *   数据类型 变量名 = 值;
        * 
        *   或者:
        *   数据类型 变量名;
        *   变量名 = 值;
        * */
        
        //第一种,定义的同时进行赋值
        byte firstByte = 10;
        System.out.println(firstByte);
​
        //第二种,先定义,再赋值
        byte secondByte;
        secondByte = 5;
        System.out.println(secondByte);
    }
​
}

注意,如果你采用先声明、后赋值的方式,一定要保证在打印变量之前,变量有值。以下代码将报错:

我们上面说过,只要在使用之前有值即可,所以以下代码也会正常运行:

public class Hello {
    
    public static void main(String[] args) {
        //先定义变量,不赋值
        byte firstByte;
​
        //中间可以进行任意操作,可以拥有任意行代码
        byte secondByte = 10;
        System.out.println(secondByte);
​
        //保证在使用之前赋值即可
        firstByte = 5;
        System.out.println(firstByte);
    }
}

 而且变量名不能重复,至于可以重复的场景会在以后进行讲解,以下代码将报错:

变量未声明就使用,报错:

 

而且变量的值,是可以无限次赋值的,新的值会覆盖旧的值:

public class Hello {
​
    public static void main(String[] args) {
        /*
        *   变量的定义语法:
        *   数据类型 变量名 = 值;
        *
        *   或者:
        *   数据类型 变量名;
        *   变量名 = 值;
        * */
​
        //输出2
        byte firstByte = 2;
        System.out.println(firstByte);
        
        //重新赋值,输出3
        firstByte = 3;
        System.out.println(firstByte);
        
        //新值覆盖旧值,输出6
        byte secondByte = 5;
        secondByte = 6;
        System.out.println(secondByte);
    }
}

 上面我们使用byte类型讲解了变量的基本定义、使用规则,下面就不会这么啰嗦了。

short类型

short类型叫做“短整型”,根据名称也可以看出来它存不了太大的整数。它的取值范围是-32768 —— 32767,占16个bit位,2个字节。

short类型的定义:

public class Hello {
​
    public static void main(String[] args) {
        /*
        *   变量的定义语法:
        *   数据类型 变量名 = 值;
        *
        *   或者:
        *   数据类型 变量名;
        *   变量名 = 值;
        * */
​
        //第一种,定义的同时进行赋值
        short firstShort = 15;
        System.out.println(firstShort);
​
        //第二种,先定义,再赋值
        short secondShort;
        secondShort = 5;
        System.out.println(secondShort);
    }
}

int类型

int叫做整型,是比较常用的一个数据类型,它占32位,4个字节,取值范围是-2147483648 —— 2147483647。平常存储年龄、人数、天数……一般都是用它。

int类型的定义:

public class Hello {
​
    public static void main(String[] args) {
        /*
        *   变量的定义语法:
        *   数据类型 变量名 = 值;
        *
        *   或者:
        *   数据类型 变量名;
        *   变量名 = 值;
        * */
​
        //第一种,定义的同时进行赋值
        int firstInt = 100;
        System.out.println(firstInt);
​
        //第二种,先定义,再赋值
        int secondInt;
        secondInt = 5;
        System.out.println(secondInt);
    }
}

long类型

long叫做“长整型”,它的取值范围要比int更大,-9223372036854775808 —— 9223372036854775807,占64bit位,8字节。

long类型的定义:

public class Hello {
​
    public static void main(String[] args) {
        /*
        *   变量的定义语法:
        *   数据类型 变量名 = 值;
        *
        *   或者:
        *   数据类型 变量名;
        *   变量名 = 值;
        * */
​
        //第一种,定义的同时进行赋值
        long firstLong = 100;
        System.out.println(firstLong);
​
        //第二种,先定义,再赋值
        long secondLong;
        secondLong = 5;
        System.out.println(secondLong);
    }
}

float类型

float类型是一种浮点型、小数,而且是单精度浮点,即小数点后只有一位。它占32位、4字节。需要注意的是,在Java当中所有的小数,默认是double类型,所以要在赋值的时候加上小写字母f,从而区分这是单精度浮点。

float类型的定义:

public class Hello {
​
    public static void main(String[] args) {
        /*
        *   变量的定义语法:
        *   数据类型 变量名 = 值;
        *
        *   或者:
        *   数据类型 变量名;
        *   变量名 = 值;
        * */
​
        //第一种,定义的同时进行赋值
        float firstFloat = 100.2f;
        System.out.println(firstFloat);
​
        //第二种,先定义,再赋值
        float secondFloat;
        secondFloat = 5.5f;
        System.out.println(secondFloat);
    }
}

double类型

double类型是双精度浮点型,小数点后有两位。它占64bit位,8字节。float类型的小数需要用小写字母f表示,double需要用小写字母d表示,只不过Java中的小数默认是double类型的,所以一般我们省略d。

double类型的定义:

public class Hello {
​
    public static void main(String[] args) {
        /*
        *   变量的定义语法:
        *   数据类型 变量名 = 值;
        *
        *   或者:
        *   数据类型 变量名;
        *   变量名 = 值;
        * */
​
        //第一种,定义的同时进行赋值
        double firstDouble = 99.99;
        System.out.println(firstDouble);
​
        //第二种,先定义,再赋值
        double secondDouble;
        secondDouble = 66.66;
        System.out.println(secondDouble);
    }
}

boolean类型

boolean类型表示条件,真或假。它只有两个值:true或false,true表示真,false表示假,经常用于在业务中判断是否满足条件,比如余额是否充足、用户是否是会员……这些都将在以后讲到,此处大家只需要会声明boolean类型的变量即可。

boolean类型的定义:

public class Hello {
​
    public static void main(String[] args) {
        /*
        *   变量的定义语法:
        *   数据类型 变量名 = 值;
        *
        *   或者:
        *   数据类型 变量名;
        *   变量名 = 值;
        * */
​
        //第一种,定义的同时进行赋值,真
        boolean firstBoolean = true;
        System.out.println(firstBoolean);
​
        //第二种,先定义,再赋值
        boolean secondBoolean;
        //赋值为假
        secondBoolean = false;
        System.out.println(secondBoolean);
    }
}

char类型

char类型可以存储任何单个的字符,包括中文字符。这个数据类型,反正在我平常的开发中基本没有用到过。char类型有很奇妙的玩法,涉及到Unicode字符编码,有时候会产生意想不到的运行效果,鉴于目前的知识进度,将在以后为大家介绍。

与上面的几个数据类型不同,char的赋值需要用单引号''引起来。

public class Hello {
​
    public static void main(String[] args) {
        /*
        *   变量的定义语法:
        *   数据类型 变量名 = 值;
        *
        *   或者:
        *   数据类型 变量名;
        *   变量名 = 值;
        * */
​
        //第一种,定义的同时进行赋值
        char firstChar = 'A';
        System.out.println(firstChar);
​
        //第二种,先定义,再赋值
        char secondChar;
        secondChar = '王';
        System.out.println(secondChar);
    }
}

 

扩展——String类型

上面的char类型,只能存储一个字符,那如果我们想存储一句话、一串字符呢?

这就需要用String,String是一个引用类型,因为它是用class关键字修饰的一个Java类,我后面会专门用一篇文章来讲String这个类在这里大家会使用String存储字符串即可

但是String类型的变量定义,和char类型几乎一样,只不过是用英文的双引号括起来的:

public class Hello {
​
    public static void main(String[] args) {
        //声明String类型的变量
        String firstString = "这是我的第一个String类型变量(其实是常量啦,后面会为大家解释~)";
        //打印
        System.out.println(firstString);
​
        /*
        *   上面的两行代码,等同于下面的一行代码。
        *   大家还记得一开始的Hello World吗?
        * 
        *   其实println()需要的就是一个Object对象,又因为String是
        *   一个类,继承了Object……算了这里对于小白太高深了,以后再
        *   给大家解释
        * */
        System.out.println("这是我的第一个String类型变量(其实是常量啦,后面会为大家解释~)");
    }
}

 

小结

以上就是我们今天的内容了,在下一节,将带领大家学习Java中的运算符,以及数据类型之间的相互兼容、转换,欢迎持续关注、转发!大家也可以关注我的微信公众号“Java开发之旅”,获取更多Java学习资源!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章