Day5

数据类型的拓展和面试题

public class Demo{
   public static void main(String[] args){
       //整数拓展: 进制   二进制0b 十进制 八进制0   十六进制0x
       int i = 10;
       int i2 = 010;//八进制
       int i3 = 0x10;//十六进制     0~9 A~F 16
       System.out.println(i);//10
       System.out.println(i2);//8
       System.out.println(i3);//16
       System.out.println("=================================");
       
//============================================================
     
       //浮点数拓展
       //银行业务怎么表示?钱 ——> BigDecimal(类) 数学工具类
       
//=============================================================
       
      //float 有限 离散 舍入误差 大约 接近但不等于
      //double
//最好完全避免使用浮点数进行比较
       
       float f = 0.1f;
       double d = 1.0/10;
       System.out.println(f==d);//false(==表示判断两数是否相等)
       System.out.println(f);//0.1
       System.out.println(d);//0.1
       
       float d1 = 1234534;
       float d2 = d1 + 1;
       System.out.println(d1==d2);//true
       
//===============================================================
       
       //字符拓展
       
       char c1 = 'a';
       char c2 = '中';
       System.out.println(c1);   // a
       System.out.println((int)c1); //97   //强制类型转换 变成int 类型
       System.out.println(c2);  //b
       System.out.println((int)c2);  //20013   //强制类型转换
       //char 类型涉及
 //所有的字符本质还是数字(强制类型转换可以把字符转换成数字)
       //编码 Unicode 2个字节 长度:0~65536   (Excel 最长 2^16=65536)
       //编码正常样子 U0000 UFFFF
        char c3 = '\u0061';//转义
       System.out.println(c3); // 输出结果:a
       
       //转义字符   意义                         ASCLL码值(十进制)
       // \t 制表符(HT)                       009
       // \n 换行(LF)                           010
       // \a 响铃(BEL)                         007
       // \b 退格(BS),将当前位置移到前一列         008
       // \f 换页(FF),将当前位置移到下页开头       012
       // \r 回车(CR),将当前位置移到本行开头       013
       // \v 垂直制表(VT)                       011
       // \\ 代表一个反斜线字符'\'                 092
       // \' 代表一个单引号(撇号)字符             039
       // \" 代表一个双引号字符                   034
       // \? 代表一个问号                         063
       // \0 空字符(NUL)                       000
       // \ddd 1到3位八进制数代表的任意字符         三位八进制
       // \xhh 十六进制所代表的任意字符             十六进制
       
       
       System.out.println("Hello\tWorld"); //输出结果:Hello World
       System.out.println("Hello\nrld");  //输出结果: Hello
                                          //         World
//===========================================================
       //?
       String sa = new String (original:"hello world");
       String ab = new String (original:"hello world");
       System.out.println(sa==sb); //false
       
       String sc = "hello world
       String sd =  "hello world";
       System.out.println(sc==sd); //true
       // 对象 从内存分析
       
       //布尔值扩展
       boolean flag = true;//用来判断
       if(flag==true){}
       if(flag){}//与上一行if一样
         // Less is More! 代码要精简易读
       
  }
}

类型转换

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

低------------------------------>高(按照字节容量,小数的优先级大于整数)

byte,short,char--->int --->long --->float --->double

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

    1. 强制类型

    2. 自动转换

public class Demo{
   public static void(String[] args){
       int i = 128;
    //   byte b = i;直接这样写会报错,所以就需要强制类型转换
       byte b = (byte)i;
       System.out.println(i); //128
       System.out.println(b); //-128 原因:Byte类的最大值是127,出现内存溢出
       //转换时要注意内存溢出
       
       //强制转换 (类型)变量名   高-->低 (上面)
       //自动转换             低-->高   (下面)
       int i= 128;
       double b = i;
       System.out.println(i);// 128
       System.out.println(b);//128.0
       
       /*注意点:
       1. 不能对布尔值进行转换
       2. 不能把对象类型转换为不相干的类型(b,i)
       3.在把大容量转换为低容量时候,强制转换;反之,自动转换;
       4.转换的时候可能存在内存溢出,或者精度问题(主要针对浮点数类型)!
       */
         
       //4.
       System.out.println((int)23.7); //23
       System.out.prinyln((int)-45.89f); //-45
       
       char c ='a';
       int d = c+1;
       System.out.println(d); //98
       System.pou.pritntln((char)d); //b
       
  }
}

 

public class Demo01{
   public static void main(String[] agrs){
       //操作比较大的数的时候,注意溢出问题
       //JDK7新特性,数字之间可以用下划线分割
       int money = 10_0000_0000;// int money = 1000000000;
       System.out.println(money); //1000000000
       
       
       
  }
}

 

posted @ 2021-12-09 20:45  念念不舍  阅读(122)  评论(0)    收藏  举报