Day04 基础03-05

03 数据类型

  • 强类型语言

    • 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用

    • 安全性高,速度慢

  • 弱类型语言

Java的数据类型分为两大类

基本类型

数值类型

整数类型
  • byte占1个字节 范围:-127~128(-2的7次方~2的7次方减1)

  • short占2个字节 范围:(-2的15次方~2的15次方减1)

  • int占4个字节 范围:(-2的31次方~2的31次方减1)

    • 最常用

  • long占8个字节 范围 :(-2的63次方~2的63次方减1)

    • long类型要在数字后加L

浮点类型
  • float占4个字节

    • float类型要在数字后加F

  • double占8个字节

字符类型:char占2个字节

boolean类型:占一位 其值只有true和false两个

引用类型

  • 接口

  • 数组

什么是字节

  • 位(bit):是计算机 内部数据 存储的最小单位,11001100是一个八位二进制数,习惯用b书写

  • 字节(bite):是计算机中 数据处理 的基本单位,习惯上用B书写

  • 1B(bite,字节)=8bite(位)

  • 字符:是指计算机中使用的字母、数字、字和符号

  • 1bit表示1位

  • 1Bite表示字节 1B=8b

  • 1024B=1Kb

  • 1024Kb=1M

  • 1024M=1G

  • 1024G=1TB

04 数据类型扩展及面试题讲解

整数拓展:进制

  • 二进制:0b

  • 十进制:正常

  • 八进制:0

  • 十八进制:0x 【0~9 A~F 16=0~16】

     public class Dome03 {
         public static void main(String[] args) {
             //整数拓展:进制 二进制0b 十进制 八进制0 十六进制0x
             int num1 = 10;
             int num2 = 0b10;
             int num3 = 010;   //八进制0
             int num4 = 0x10;  //十八进制0x 0~9、A~F = 0~15
     
             System.out.println(num1);
             System.out.println(num2);
             System.out.println(num3);
             System.out.println(num4);
        }
     }

    有用

     System.out.println("=========================================="); 输出作为分割线

浮点数拓展:避免浮点数进行比较!

 public class Dome03 {
     public static void main(String[] args) {
         //浮点数拓展 银行业务怎么表示? 钱
         //会用BigDecimal 数学工具类
         //float   有限 离散 舍入误差 大约数 接近但不等于
         //double
         float f = 0.1F;
         double d= 1.0/10;
 
         System.out.println(f==d);//false
         System.out.println(d);//0.1
         System.out.println(f);//0.1
 //==================================================
         float f1 = 2323232323232f;
         float d1 = f1+1;
 
         System.out.println(f1==d1);//true
         System.out.println(f1);//2.32323233E12
         System.out.println(d1);//2.32323233E12
 //==================================================
         double D = 1/10;
         float F = 0.1F;
 
         System.out.println(F==D);//flase
         System.out.println(D);
         System.out.println(F);
      }
 }

避免浮点数进行比较!

避免浮点数进行比较!

避免浮点数进行比较!

字符拓展:

 public class Dome03 {
     public static void main(String[] args) {
     //=========================================================================    
     //字符拓展
     //=========================================================================
 
         char c1 = 'a';
         char c2 = '中';
 
         System.out.println(c1);
         System.out.println((int)c1);//强制转换成int类型 数字输出
 
         System.out.println(c2);
         System.out.println((int)c2);//强制转换成int类型 数字输出
 
         //强制转换可以把字符换成数字
         //所有字符本质还是数字
         //编码 unicode   2字节 65536 Excel (只有2的16次方=65536行)
         //unicode表: (97 = a ;65 = A)
 
         //U0000 UFFFF
 
         char c3 = '\u0061';
 
         System.out.println(c3);//a (据说是十六进制 97转化为十六进制是61)
 
         //转义字符 (可自行百度拓展)
         //\t 制表符
         //\n 换行
         //.....
 
         System.out.println("Hello\tWorld!");//Hello World
         System.out.println("Hello\nWorld!");//Hello +enter World
 
         String sa = new String("hello world");
         String sb = new String("hello world");
         System.out.println(sa==sb);//false   WHY???
 
         String sc = "hello world";
         String sd = "hello world";
         System.out.println(sc==sd);//true
         //学到对象 从内存级别分析
    }
 }

布尔值拓展

 public class Dome03 {
     public static void main(String[] args) {
     //============================================================================
     //布尔值扩展
     //============================================================================
         boolean flag = true;
         if (flag==true){}  //新手
         if (flag){}        //老手
         //Less is More! 代码要精简易毒        
    }
 }        

05 类型转换

  • 由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。

  • image-20220106182655412

  • 运算中,不同类型的数据先转化位同一类型,然后进行运算。

  • 小数(浮点数)优先级高于整数

强制类型转换:高-->低

自动类型转换:低-->高

 public class Dome04 {
     public static void main(String[] args) {
         int i = 128;
         byte b = (byte)i;  //强制转换
         double d = i;      //自动转换
 
         //强制转换   高-->低 需加:(类型)变量名     变量名不能相同
         //自动转换   低-->高
 
         System.out.println(i);  //128
         System.out.println(b);  //-128 出现问题 内存溢出 byte [-128,127]
         System.out.println(d);  //128.0
         
         
         System.out.println("=============================");
         System.out.println((int)23.7);
         System.out.println((int)-45.78f);  //老手?
 
         //上下代码相等 上较简单?
 
         double num1 = 23.7;
         float num2 = -45.78f;
         System.out.println((int)num1);
         System.out.println((int)num2);
 
 
         System.out.println("=============================");
         char x = 'a';
         int y = x+1;
         System.out.println(y);
         System.out.println((char)y);
 
         /*
         注意点:
         1.不能对布尔值进行转换
         2.不能把对象类型转换为不相干的类型
         3.在把高容量转换为低容量的时候,强制转换
         4.转换的时候可能存在内存溢出,或者精度问题(小数到整数会自动舍去)
          */
 
    }
 }

常见问题

 public class Dome05 {
     public static void main(String[] args) {
         //常见问题!!!
         //操作比较大的数的时候,注意溢出问题
         //JDK7新特性,数字之间可以用下划线分割
         //int money = 1000000000 --> 10_0000_0000
 
         int money = 10_0000_0000;
         int year = 20;
         int total = money*year;
         int total2 = money*year;  //默认是int,转换之前已经存在问题了,所以输出还是有问题
         long total3 = money*(long)year;  //方法:先把一个数据转换为long!可正确输出
 
         System.out.println(total);  //-1474836480,计算的时候溢出了
         System.out.println(total2); //-1474836480,计算的时候溢出了
         System.out.println(total3); //20000000000 正确计算
 
         /*
         (自己想法)
         int money = 10_0000_0000; //方便!
         int year = 20;
         long total = (long)money*(long)year;
         System.out.println(total); 200_0000_0000
         */
 
 
    }
 }



posted @   登不登对  阅读(275)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示