day04

day 04

​ ——Less Is More!

代码要精读易懂

数据类型拓展和部分面试题

整数拓展:

二进制 0b

int i=0b10  sout=2

十进制

int i1=10  sout=10

八进制 0

int i2=010  sout=8

十六进制 0x 0~9 A~F

iny i3=0x10  sout=16
 注:sout= 为 System.out.println的结果为

浮点数拓展

银行业务怎么表示钱?不能用float表示,用BigDecimaL 表示,他是一个数学工具类

​ float double 是有限 离散 舍入误差 大约 接近但不等于的

float f=0.1f;//0.1
double d=1.0/10;//0.1
sout(f==d);  sout=false
    //但是
float d1=235645613421f;
float d2=d1+1;
sout(d1==d2);  sout=true
    //!因此比较的话用bigdecimal
注:原因要从内存分析

有意思的字符串同原因

String sa=new String(orignal:"hello world");
String sb=new String(orignal:"hello world");
sout(sa==sb);   sout=false
String sc="hello world";
String sd="hello world";
sout(sc==sd);   sout=true
    //要在对象中从内存分析

字符拓展

——所有的字符本质还是数字

char c1='A';
char c2='中';
sout(c1);        sout=A
sout((int)c1);   sout=65//加int是强制转换
sout(c2);        sout=中
sout((int)c2);   sout=20013//加int是强制转换
   //强制转换的是unicode编码,占2个字节 0~65536,excel使用的限制就是2的16次方,也就是65536
   //U0000~UFFFF
    char c3='\u0061';
    sout(c3);   sout=a
    

转义字符

转义字符 意义 ASCII码值(十进制)
\a 响铃(BEL) 007
\b 退格(BS) ,将当前位置移到前一列 008
\f 换页(FF),将当前位置移到下页开头 012
\n 换行(LF) ,将当前位置移到下一行开头 010
\r 回车(CR) ,将当前位置移到本行开头 013
\t 水平制表(HT) (跳到下一个TAB位置) 009
\v 垂直制表(VT) 011
\ 代表一个反斜线字符''' 092
' 代表一个单引号(撇号)字符 039
" 代表一个双引号字符 034
? 代表一个问号 063
\0 空字符(NUL) 000
\ddd 1到3位八进制数所代表的任意字符 三位八进制
\xhh 十六进制所代表的任意字符 十六进制

主要是:

\t 制表符

\n 换行

sout("Hello\tWorld"); sout=Hello World (中间有空格)
sout("Hello\nWorld"); sout=Hello
                           world(换行)

布尔型拓展

——新老手的辨别

boolean flag=true;
if(flag==true){}
if(flag)
    //两者一样的,但是从中可以看出你是新老手

类型转换

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

类型转换由高到低

double>float>long>int>char,short,byte
int i=128;             sout=128
byte b=(byte)i;        sout=-128//内存溢出
    //强制转换  (类型)+变量名  由高到低
 double b=i;           sout=128.0
    //自动转换   由低到高
  /* 注:
  1。不能对布尔值进行转换
  2.不能把对像类型转换为不相干的类型
  3.在把高容量转换到滴容量的时候,强制转换
  4.转换的时候可能存在内存溢出,或者精度问题!
  */
  /*
  例     sout((int)23.7);  sout=23
         sout((int)-45.89f);  sout=-45
  ===============================================
  char c='a';
  int d=c+1;
  sout(d);       sout=a
  sout((char)d); sout=98
    */ 
     
//操作比较大的数的时候,注意溢出的问题
     int money =10_0000_0000;//jdk新特性,数字之间可以用下划线分割,不会输出。sout=1000000000
     int years=20;
     int total1=money*years;//sout=-1474836480,计算的时候溢出了
     long total2=money*years;//默认是int,转换之前已经存在问题了
     long total2=money*(long)years;//sout=20000000000,先把一个数转换为long就可以输出




/***
*░░░░░░░░░░░░░░░░░░░░░░░░▄░░
*░░░░░░░░░▐█░░░░░░░░░░░▄▀▒▌░
*░░░░░░░░▐▀▒█░░░░░░░░▄▀▒▒▒▐
*░░░░░░░▐▄▀▒▒▀▀▀▀▄▄▄▀▒▒▒▒▒▐
*░░░░░▄▄▀▒░▒▒▒▒▒▒▒▒▒█▒▒▄█▒▐
*░░░▄▀▒▒▒░░░▒▒▒░░░▒▒▒▀██▀▒▌
*░░▐▒▒▒▄▄▒▒▒▒░░░▒▒▒▒▒▒▒▀▄▒▒
*░░▌░░▌█▀▒▒▒▒▒▄▀█▄▒▒▒▒▒▒▒█▒▐
*░▐░░░▒▒▒▒▒▒▒▒▌██▀▒▒░░░▒▒▒▀▄
*░▌░▒▄██▄▒▒▒▒▒▒▒▒▒░░░░░░▒▒▒▒
*▀▒▀▐▄█▄█▌▄░▀▒▒░░░░░░░░░░▒▒▒
*单身狗就这样默默地看着你,一句话也不说。
*/

上一篇:day04-数组


下一篇:Day04 人机交互input