ThinkInJava学习笔记--1

BigDecimal:支持任意精度的定点数,适用于精确的货币计算(必须String作为构造器参数,否则依旧会出现精度损失的情况)(double和float由于会出现精度丢失的问题,适用于科学计算)。

JAVA数组:确保初始化,牺牲少量内存的代价进行运行时的范围检查(下标检查)。

无需销毁JAVA对象:Java对象无法在作用域之外被引用,但会一直存在于堆中,它不需要像C++那样指定其存在的时间;由于java存在垃圾回收机制,也不要担心堆中滞留的对象会导致内存溢出。(回收长时间、、、未被引用的对象)

方法参数列表:方法的参数都是对象(言外之意就是基本类型最好使用包装器类型进行传递么?不过实际场景中由于自动包装和自动拆包的特性应该也没必要这么做)

static的用法:1、为特定域分配单一的存储空间(static域,静态变量)。2、定义静态方法,不与类的对象关联(静态方法)。由于static方法不需要由特定对象进行访问,所以导致static方法也不能访问非static的域(变量)[也可以简单的粗暴的认为:static类型的方法不是初始过后的对象进行调用的,所以对于需要初始化的非static变量,它不能够访问;嗯,没有完成义务,同样不能享受福利?]另外static方法可以通过初始化的具体对象进行引用(莫名有种重复定义的感觉,可能是某些特定的情境下需要吧)

public class TestStatic {
    private static int a = 3;
    private int b = 4;
    public int getA(){
        return a;
    }
    public static int getNum(){
        return a;
    }
    
    public static void main(String[] args){
        TestStatic ts = new TestStatic();
        System.out.println(TestStatic.getNum());   //类名访问静态方法
        System.out.println(ts.getNum());           //具体的对象访问静态方法
        System.out.println(ts.a);                  //具体的对象访问静态域
        System.out.println(TestStatic.a);          //类名访问静态域
        System.out.println(ts.getA());             //通过非静态方法获取静态域
        
        //可以粗略的当作静态成员拥有天然的初始化属性,可以较为自由的访问
        //而非静态成员在未经具体对象初始化就去访问是会报错的
    }
}

args: 存储命令行参数;

关于等于符号 "="   当使用 "=" 给基本类型赋值时,是将右值复制给左值,右值和左值分别指向不同的物理地址,两者各自的运算不影响对方的值;当使用 "=" 给对象类型赋值时,此时是将同一个对象的引用分享给了另一个对象,也就是俗称的浅拷贝,不论左值还是右值试图修改对象的属性,都会导致对方发生改变。将对象作为参数传递到方法中,对象在方法中被修改某些域,方法外的对象也被改变。(JDK5)

发布了35 篇原创文章 · 获赞 11 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/bokerr/article/details/100935640