栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 的数据类型有大秘密,你知道吗?(一)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 的数据类型有大秘密,你知道吗?(一)

目录

数据类型与运算符

1.0 变量和类型

1.1 整形变量(重点)

1.2 长整型变量

1.3 双精度浮点型变量(重点)

1.4 单精度浮点型变量

1.5 字符类型变量

1.6 字节类型变量


 上一篇 Java运行原理 刺激到了不?

这篇的内容更加让你吃惊哦!

大家跟着Nick来了解下吧~

           

数据类型与运算符

1.0 变量和类型

      变量:指的是程序运行时可变的量. 相当于开辟一块内存空间来保存一些数据。

    

      类型:则是对变量的种类进行了划分, 不同的类型的变量具有不同的特性。

        

Nick我还是不明白变量是啥?

      

      咳咳!简单来说,变量是一个箱子,箱子有不同的种类和容量,这就是变量的类型和大小。

        

      我们所讨论的 "变量" 主要和我们的 "内存" 这样的硬件设备密切相关。 这里Nick画了一张图。

      

    

 为啥要了解冯诺依曼?

   

         

      约翰·冯·诺依曼(John von Neumann,1903年12月28日-1957年2月8日),美籍匈牙利数学家、计算机科学家、物理学家,是20世纪最重要的数学家之一。冯·诺依曼是罗兰大学数学博士,是现代计算机、博弈论、核武器和生化武器等领域内的科学全才之一,被后人称为“现代计算机之父”、“博弈论之父”。

    

       现在很多计算机运行都是根据这个原理的,我们一起来看看吧~

   

      举个例子,你知道java当中定义一个int变量是怎么转存的嘛?上面这张图就能解释,再举一个例子了解这张图,假如你有一部8G+125G的手机,8G就是内存储器CPU,125G就是外存储器内存。我通过点击屏幕(输入设备)输入搜索XXX,手机里的内存储器调用某款搜索引擎程序,通过运算器对你指令的计算,通过控制器对你指令进行逻辑判断,最终将你想要的结果显示在你的输出设备上!

      

 同理,定义一个数据类型

并输出也是同样的原理

      回归原题,现在我们来看第一个


           

1.1 整形变量(重点)

    

基本语法格式

int 变量名 = 初始值;

    

代码示例:

int num = 10; // 定义一个整型变量
System.out.println(num) ;

   

注意事项: 

    int 表示变量的类型是一个整型。变量名是变量的标识. 后续都是通过这个名字来使用变量。Java 中 = 表示赋值(和数学不一样), 意思是给变量设置一个初始值。(安全性)初始化操作是可选的, 但是建议创建变量的时候都显式初始化。最后不要忘记分号, 否则会编译失败。// 表示注释。注释作为代码的解释说明部分, 不参与编译运行。

        

变量定义不初始化行吗?

              

           

不可以哦,编译器会报错!

体现了Java的安全性


    

变量命名?

    

小驼峰 》数字,字母,下划线,美元符(不能数字开头)

    

下面这些定义可以编译运行嘛?

       

int ______=10;
int __________=101;
int 钱 = 100;

     

可以!合法但不合理!

典型的坑人代码....

为啥钱可以当变量名?

这就是Java有趣的地方了

它采用Unicode字符集,包含多种语言

给你看个阿里的规范手册

规范手册(戳我下载)

   

所以嘛!以后去公司少不了一通恶补咯     


    

int是几个字节?

      在 Java 中, 一个 int 变量占 4 个字节,4*8=32个比特位。这操作系统没有直接关系,不会因为换了机子而改变自身的位数,在window上运行是4个字节,Linux上还是4字节,体现了Java的可移植性强。

    

什么是字节?

字节是计算机中表示空间大小的基本单位。计算机使用二进制表示数据. 我们认为 8 个二进制位(bit) 为一个字节(Byte)。我们平时的计算机为 8GB 内存, 意思是 8G 个字节。其中 1KB = 1024 Byte, 1MB = 1024 KB, 1GB = 1024 MB。所以 8GB 相当于 80 多亿个字节。


    

测试int范围小游戏

         

使用以下代码查看 Java 中的整型数据范围

    

System.out.println(Integer.MAX_VALUE);  // int 的最大值
System.out.println(Integer.MIN_VALUE);  // int 的最小值

       

    

      由此可见4个字节表示的范围是:-2^31 -> 2^31-1 , 也就大概是 -21亿 到 +21亿。

     

如果给最大值+1,最小值-1呢?

      

public class a1{
   public static void main(String[] args){
       System.out.println(Integer.MAX_VALUE+1);  
       System.out.println(Integer.MIN_VALUE-1);  
       //Integer是int的plus版本,官方称之为包装类!
   }
}

   

我屮艸芔茻?     

           

    

居然最大值和最小值互换了?!  

数据类型原来就是个圈?

圈儿的范围大小取决于字节大小!

         

    

      如果运算的结果超出了 int 的最大范围, 就会出现溢出的情况!

    


         

      21亿这样的数字对于当前的大数据时代来说, 是很容易超出的. 针对这种情况, 我们就需要使用更大范围的数据类型来 表示了. Java 中提供了 long 类型。

    

1.2 长整型变量

    

基本语法格式:

long 变量名 = 初始值;

      

代码示例:

long num = 10L; // 定义一个长整型变量, 初始值写作 10l 也可以(小写的 L, 不是数字1). 
System.out.println(num) ;

    

注意事项:

    基本语法格式和创建 int 变量基本一致, 只是把类型修改成 long。初始化设定的值为 10L , 表示一个长整型的数字。10l 也可以。使用 10 初始化也可以, 10 的类型是 int, 10L 的类型是 long, 使用 10 L 或者 10 l 更好一些。

     

      Java 中 long 类型占 8 个字节. 表示的数据范围 -2^63 -> 2^63-1

       

使用以下代码查看 Java 中的长整型数据范围:

      

System.out.println(Long.MAX_VALUE);
System.out.println(Long.MIN_VALUE)
    
// 运行结果
9223372036854775807
-9223372036854775808

      


      

1.3 双精度浮点型变量(重点)

     

基本语法格式

double 变量名 = 初始值;

       

代码示例

double num = 2.0;
System.out.println(num)

      

数字游戏 1/2=?

      

        

      在 Java 中, int 除以 int 的值仍然是 int(会直接舍弃小数部分)。

      

      如果想得到 0.5, 需要使用 double 类型计算。

           

       

神奇的代码

      

double num = 1.1;
System.out.println(num * num)
    
// 执行结果
1.2100000000000002

        

      Java 中的 double 虽然也是 8 个字节, 但是浮点数的内存布局和整数差别很大, 不能单纯的用 2 ^ n 的形式表示数据范围。

        

      Java 的 double 类型的内存布局遵守 IEEE 754 标准(和C语言一样), 尝试使用有限的内存空间表示可能无限的小数, 势必会存在一定的精度误差。

      


      

1.4 单精度浮点型变量

      

基本格式

float 变量名 = 初始值;

      

代码示例

float num = 3.0f;    // 写作 3.0F 也可以
System.out.println(num);

      

      float 类型在 Java 中占四个字节, 同样遵守 IEEE 754 标准. 由于表示的数据精度范围较小, 一般在工程上用到浮点数都 优先考虑 double, 不太推荐使用 float。

     


    

1.5 字符类型变量

    

基本格式

char 变量名 = 初始值;

    

代码示例

char ch = 'A'

    

注意事项

    Java 中使用 单引号 + 单个字母的形式表示字符字面值。计算机中的字符本质上是一个整数. 在 C 语言中使用 ASCII 表示字符, 而 Java 中使用 Unicode 表示字符。因此一 个字符占用两个字节, 表示的字符种类更多, 包括中文。C语言中 char 占一个字节(区别)。

     

使用一个字符表示一个汉字

char ch = '呵'; 
System.out.println(ch); 

      

执行 javac 的时候可能出现以下错误:

        

此时我们在执行 javac 时加上 -encoding UTF-8 选项即可。

    

javac -encoding UTF-8 a1.java 

    

      


       

1.6 字节类型变量

      

基本语法格式

byte 变量名 = 初始值; 

        

代码示例:

byte value = 0; 
System.out.println(value); 

     

注意事项:     

    字节类型表示的也是整数. 只占一个字节, 表示范围较小 ( -128 -> +127 ) 字节类型和字符类型互不相干

     

超范围了

        

   


未完待续,下一篇,更精彩!

喜欢的话,欢迎点赞收藏加关注哦!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/762437.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号