Java 读书笔记 5

初始化与清理

1.重载和区分重载
: 书上例子很好,洗衣服,洗车,洗狗;同样都是洗,却洗的是不一样的东西,似乎用一个名字做不同的事情,理所应当;
而且呢,还告诉我们为什么不一样,因为给的参数不一样,当来着是衣服的时候,就用洗衣服的方式来洗,如果是车,就用车的方式;
不可以通过返回值区分,你洗狗洗出来特干净,他就不干净,但是方法实际是相同的;
不可以通过访问修饰符区分,你就给你家洗衣服,洗衣店谁家衣服都洗,但是方法还是一样的;

2.基本类型与重载;
简单来说呢,基本类型在重载时,由于类型不同重载就会出现问题;
上代码喽

public class Test  {
    public void testfloat(float a)
    {
        System.out.println("lll");
    }
    public  void  testdouble(double a)
    {
        System.out.println("222");
    }
}

        Test test = new Test();
        double a = 0;
        float b= 0;
        test.testfloat(a);//这样写报错    大类型不能向下转换,直接报错
        test.testfloat((float) a);
        test.testdouble(b);    小类型转化为大类型

其实想想就明白了,32位转化为64位。又没什么损失,反过来的话,就会丢失精度;况且如果能够来回转的话,我估计你最后都不知道出来的是哪个类型的;

3.this关键字

  • 一般的this肯定这么用的最多,这时其实不写this也是一样的啦;写上this更加清晰,指的是本对象里的某个属性等于参数。
public class Hello { 

    String s = "Hello"; 

    public Hello(String s){ 
        System.out.println("s = " + s); 
        System.out.println("1 -> this.s = " + this.s); 
        this.s = s; 
        System.out.println("2 -> this.s = " + this.s); 
    } 

    public static void main(String[] args) { 
    Hello x=new Hello("HelloWorld!"); 
    } 
}
  • 还有就是调用自己的其他构造函数,继承什么的题目里经常会有的那种
public class Flower{ 
           Flower (int petals){} 
           Flower(String ss){} 
           Flower(int petals, Sting ss){ 
                //petals++;调用另一个构造函数的语句必须在最起始的位置 
                this(petals); 
               //this(ss);会产生错误,因为在一个构造函数中只能调用一个构造函数 
           } 
} 
  • 这次学到了这个
public class A { 
  public A() { 
    new B(this).print();     //将自身当成参数传递过去
  } 

  public void print() { 
    System.out.println("Hello from A!"); 
  } 
} 

public class B { 
  A a; 
  public B(A a) { 
    this.a = a; 
  } 

  public void print() { 
    a.print(); 
    System.out.println("Hello from B!"); 
  } 
} 
  • 匿名类 this一般代表整个匿名类,日后再说
public class A { 
    int i = 1; 

    public A() { 
        Thread thread = new Thread() { 
            public void run() { 
                for(;;) { 
                    A.this.run();       //匿名类
                    try { 
                        sleep(1000); 
                    } catch(InterruptedException ie) {     }

                } 
           } 
        }; //注意这里有; 
        thread.start(); 
    } 

    public void run() { 
        System.out.println("i = " + i); 
        i++; 
    } 

    public static void main(String[] args) throws Exception { 
        new A(); 
    }
} 

初始化顺序(对于类来说)

1.静态变量初始化 //由于static不可初始化局部变量,就没有小函数的担心啦;
2.普通变量初始化
3.变量都初始化后,方法开始执行

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值