Java基础整理(一)

Java基础整理(一)


标识符

  • 所有标识符都应该以字母(大写或小写)、美元符号($)或下划线(_)开始
  • 首字符之后可以是字母(大写或小写)、美元符号($)、数字或下划线(_)组成
  • 标识符具有大小写敏感
  • 不能使用关键字作为变量名或方法名

数据类型

Java中数据类型分为两大类:基本类型、引用类型

1.八大基本类型

字节大小表示范围
byte1个字节-128~127
short2个字节-32768~32767
int4个字节-21474836482147483647($-2^{31}$ 2 31 2^{31} 231-1)
long8个字节 − 2 63 -2^{63} 263~ 2 63 2^{63} 263-1(使用时在变量后加上L
float4个字节使用时在变量后加上F
double8个字节
char2个字节只能表示一个字符
boolean1个字节只有true和false

注:String不是关键字,而是属于类!!!!!!!!

2.引用数据类型

除八大基本类型外的数据类型,包括类、接口、数组

对类进行一些说明

示例代码:

public class HelloWorld {
    public static void main(String[] args) {
       String sa=new String("test");
       String sb=new String("test");
       System.out.println(sa==sb);  //输出结果为false

       String sc="test";
       String sd="test";
       System.out.println(sc == sd); //输出结果为true
    }
}

造成两次输出结果不同的原因主要是:第一个虽然值都表示test,但分别new了两个对象,不同对象指向的地址是不同的。

3.八大基本类型拓展内容

  • 整数拓展(进制)

    标志样例
    二进制0bint i=0b10;
    八进制0int i=010;
    十进制int i=10;
    十六进制0xint i=0x10;
  • 浮点数拓展

    float和double均会舍入误差,只是一个大约的数,所以最好不要使用浮点数进行比较!最好不要使用浮点数进行比较!

    示例代码1:

    public class Demo {
        public static void main(String[] args) {
           float f=0.1f;  //0.1
           double d=1.0/10;  //0.1
            System.out.println(f == d); //输出结果为 false
        }
    }
    

    示例代码2:

    public class Demo {
        public static void main(String[] args) {
           float d1=111111111f;
           float d2=d1+1;
           System.out.println(d1 == d2);  //输出结果为true
        }
    }
    

    因此,在对比较大的数字进行运算比较时,最好使用BigDecimal类

    方法一:

    BigDecimal BigDecimal(String s);
    

    方法二:

    static BigDecimal valueOf(double d);
    
  • 字符拓展

    所有字符的本质就是数字,即字符可以转换成相应的数字。

  • 类型转换

    精度由低到高:byte,short,char ——> int ——> long ——> float ——> double

    类型转换主要分为强制转换自动转换两种

    强制转换:由高精度向低精度的转换

    ​ **自动转换:**由低精度向高精度的转换

    运算中,不同类型的输先转化为同一类型,再进行运算。

    在转换过程中,需要注意的事项:

    1. 不能对布尔值进行转换
    2. 不能把对象类型转换为不相干的类型
    3. 在把高容量转换成低容量的时候,进行强制转换
    4. 转换的时候可能存在内存溢出精度问题

    分析问题:

    public class HelloWorld {
        public static void main(String[] args) {
           int money=20_0000_0000;
           int years=20;
           int total1=money*years;  
           long total2=money*years;
           System.out.println(total1); //结果不正确 溢出!
           System.out.println(total2);  //结果依然不正确 还是溢出!
        }
    }
    

    那么问题来了!为什么我已经定义了long类型的total2变量结果却还是溢出了呢?

    答案很简单,当把计算结果赋值给long类型的total2时,计算结果已经溢出了,并没有转换!

    解决办法:

    long total3=money*((long)years); //先把其中一个数进行类型转换再计算
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值