美文网首页Java 杂谈
从0开始学JAVA(1) 数据类型

从0开始学JAVA(1) 数据类型

作者: 程序源monster | 来源:发表于2019-08-16 20:48 被阅读0次
.jpg

Java语言中对于数据类型分为2种
基本数据类型(一些具体的数字单元,例如 1 、 1.1、)

数值型:

整形:byte、 short、int、 long -->默认值:0
浮点型 float、double -->默认值:0.0
布尔型: boolean -->默认值:false

字符型:char -->默认值'u0000'

引用数据类型(牵扯到数据内存的使用)

数组、类型、接口 -->默认值:null
浮点型数据
对于java中的小数类型的常量,其对应的类型都是double类型,就类似整数类型的常量对应的是int类型。

字符型
在任何编程语言中,字符都可以和int相互转换,字符转化成int将得到对应的系统编码。
例子:

int num5 = 'A';
System.out.println(num5);//65

字符编码参考:
大写字母'A'(65)~'Z'(90)
小写字母'a'(97)~'z'(122)
数字范围 '0'(48)~'9'(57)
可以发现大小写字母之间的编码差32,由此可以实现英文字母大小写的转换。
且java可以使用char进行中文保存,是因为java使用unicode这种16进制的编码。

数据类型选择规则:
如果要描述数字,首选int、double
如果要进行数据传输或者文字编码使用byte类型(二进制处理操作)
处理中文最方便操作使用的是char
描述内存或者文件大小、或者描述表的主键使用long
注意
数据溢出问题
数据类型可以进行转换的,范围小的数据类型可以自动转换为大的数据类型,但是数据大的要转为小的则需要进行强制转换,同时还需要注意因此带来的数据溢出问题。示例如下。

猜猜结果是什么?

int num = Integer.MAX_VALUE;
System.out.println(num + 1);

看出来区别了吗?由于java的自动类型转换,num+1L会转换为long类型,所以数据溢出的问题就解决了。

强制转换可能导致数据溢出
隐式转换也叫作自动类型转换, 由系统自动完成.从存储范围小的类型到存储范围大的类型
byte ->short(char)->int->long->float->double
显示类型转换也叫作强制类型转换, 是从存储范围大的类型到存储范围小的类型.
显示类型转换需要进行声明,但是当心会出现精度丢失的问题如:

long longNum = Integer.MAX_VALUE + 1;
int num2 = (int)longNum;
System.out.println(num2);//-2147483648

结果显然是因为精度丢失导致的结果不对,此处需要注意。除非到不得已情况,不然不要轻易使用强制类型转换。

byte类型需要注意的地方
那么再思考一下如下代码结果是什么呢?

//此处20是int类型,但java对byte类型赋值有特殊处理
//如果该值没有超过byte最大值,则会自动转换为byte类型进行赋值。
//如果超过byte最大值,才会要求强制转换
byte num4 = 20;
System.out.println(num4 * num4 );

答案是:400
那为什么此处400超过byte最大值127而未发生数据溢出?
再看下如下代码

byte num4 = 20;
byte result = num4 * num4;
System.out.println(result);

结果是什么?
会编译错误!为什么?因为此时num4 * num4 的结果超过了byte类型最大值,所以是int类型,那么此处就需要强制转换才能够防止编译错误。
当然实际中不会这么写,此处只是为了说明byte的变量赋值机制。


image.png

相关文章

  • 从0开始学JAVA(1) 数据类型

    Java语言中对于数据类型分为2种基本数据类型(一些具体的数字单元,例如 1 、 1.1、) 数值型: 整形:by...

  • D1:从0开始学Java

    2014年,从一所二流本科经济学专业毕业,之后这两年,加上近半年的创业,都是在OTA行业从事市场相关的工作,辗转过...

  • 0基础学Java?我从彷徨到曙光的心路历程

    0基础学Java?我从彷徨到曙光的心路历程 我是从0基础开始学Java的,在来到尚学堂之前,我对java一无所知。...

  • 从0开始复习java(1)

    java语言概述 1、java8的新特性。 重新设计的接口语法,Lambda表达式,方法引用,构造器引用,函数式编...

  • 小白学基金

    从0开始学基金(第一篇) 从0开始学基金(第二篇) 从0开始学基金(第三篇) 从0开始学基金(第四篇) 从0开始学...

  • 跟我开始从0学Android--从0学java--java简单介

    文章最早发布于我的微信公众号中,欢迎大家扫描二维码关注微信公众获取更多干货资源。本文为sydMobile原创文章,...

  • Python爬虫从0开始学(1)

    在简书写Python爬虫的文章超过30篇了(《Python爬虫文章专辑》),上周加了不少想学习Python爬虫的朋...

  • 跟我开始从0学Android-Java基础1-基本数据类型

    文章最早发布于我的微信公众号中,欢迎关注公众号 Android_De_Home 获取更多干货资源。本文为sydMo...

  • 【从0到1学算法】快速排序

    系列文章导航:【从0到1学算法】二分查找法【从0到1学算法】大O表示法【从0到1学算法】 数组和链表【从0到1学算...

  • IDEA/JAVA从0开始

    1.idea创建项目spring initializr与maven区别? 答:创建spring initializ...

网友评论

    本文标题:从0开始学JAVA(1) 数据类型

    本文链接:https://www.haomeiwen.com/subject/gzfcsctx.html