[JavaSE] 数据类型(一)

举报
Nick_Bears 发表于 2022/04/01 11:22:09 2022/04/01
【摘要】       约翰·冯·诺依曼(John von Neumann,1903年12月28日-1957年2月8日),美籍匈牙利数学家、计算机科学家、物理学家,是20世纪最重要的数学家之一。冯·诺依曼是罗兰大学数学博士,是现代计算机、博弈论、核武器和生化武器等领域内的科学全才之一,被后人称为“现代计算机之父”、“博弈论之父”        现在很多计算机运行都是根据这个原理的,我们一起来看

 目录

数据类型与运算符

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) ;

   

注意事项: 

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

        

变量定义不初始化行吗?

              

           

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

体现了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) ;

    

注意事项:

  1. 基本语法格式和创建 int 变量基本一致, 只是把类型修改成 long。
  2. 初始化设定的值为 10L , 表示一个长整型的数字。10l 也可以。
  3. 使用 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'

    

注意事项

  1. Java 中使用 单引号 + 单个字母的形式表示字符字面值
  2. 计算机中的字符本质上是一个整数. 在 C 语言中使用 ASCII 表示字符, 而 Java 中使用 Unicode 表示字符。因此一 个字符占用两个字节, 表示的字符种类更多, 包括中文。
  3. 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); 

     

注意事项:     

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

     

超范围了

        

   

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




【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。