• java 备忘


    this:是和特定对象关联的引用。

    是调用方法的对象的引用,this 用法和其他对象引用并无不同。

    this 在方法内 使用,表示对 调用方法的对象 的引用

    当需要明确指出 对当前对象的引用时,才使用this关键字。

    this —— 这个对象、当前对象(类型是引用,其实,因为是在堆上new的对象,对对象的操作永远都只能是引用。一切对象皆是引用。一旦哪个对象没有引用了,就可能要被销毁了

    理解了this,有助于 对比理解static:

    static的方法就是没有this的方法。(上面说了,this是和对象(的引用)关联,即和某一个具体对象相关!) 

    static里不能含this,因为static可以用类名来调用,即可能连一个对象都没有创建的时候,就能用static, 如果static方法里含this了,那么this指的那个对象在哪里呢?? 就会矛盾了!

    一个是和类相关的,一个是和具体对象相关的!

    它们就是一对儿。

    初始化:——(先指定初始化/自动初始化,自动初始化在构造器调用之前)构造器初始化 方便灵活

    指定/自动初始化顺序 取决变量于定义的顺序。

     数组初始化:

    重要的一种形式是 new className[]{初始化列表。。} 例如

    String: new String[]{"aaa","afd","fsdafsd"}

    某个类如Rock: new Rock[]{new Rock(), new Rock(2) }

    (假设Rock类提供了上面的两种构造器)

    这种初始化形式可以用在很多地方:如 我们知道main(String[] args),main有个String[]的 参数

    我们可以使用上面的数组初始化形式给main传 args:

    main(new String[]{"afdfsdaf","afsafasf"})

    即,可以用在参数是数组的时候传参。

    因为Java中数组不指定大小,因此当一个方法的参数是数组时,就类似于C语言中的可变参数了。

    可以应用于参数个数未知的场合(如String[] args)。或是类型未知的场合(使用Object[])。

    可以创建 以对应的类型的 数组为参数 的方法:

    void array(Object[] args){

    }

    新的Java SE5 有了新的样式的支持:

    void array(Object... args){

    }

    如此,可以不用显示编写数组初始化的语法了。即可以去掉 上面数组初始化形式中的new className[]{}

    只使用初始化列表即可:

    如果是一个String类型的可变参数列表:

    array("afds","afafs")

    关于this构造器 参考代码

    public class ThisTest {
    
        private int i=0;
    
        //第一个构造器:有一个int型形参
    
        ThisTest(int i){
    
           this.i=i+1;//此时this表示引用成员变量i,而非函数参数i
    
           System.out.println("Int constructor i——this.i:  "+i+"——"+this.i);
    
           System.out.println("i-1:"+(i-1)+"this.i+1:"+(this.i+1));
    
           //从两个输出结果充分证明了i和this.i是不一样的!
    
        }
    
        //  第二个构造器:有一个String型形参
    
        ThisTest(String s){
    
           System.out.println("String constructor:  "+s);
    
        }
    
        //  第三个构造器:有一个int型形参和一个String型形参
    
        ThisTest(int i,String s){
    
           this(s);//this调用第二个构造器
    
           //this(i);
    
          
           this.i=i++;//this以引用该类的成员变量
    
           System.out.println("Int constructor:  "+i+"/n"+"String constructor:  "+s);
    
        }
    
        public ThisTest increment(){
    
           this.i++;
    
           return this;//返回的是当前的对象,该对象属于(ThisTest)
    
        }
    
        public static void main(String[] args){
    
           ThisTest tt0=new ThisTest(10);
    
           ThisTest tt1=new ThisTest("ok");
    
           ThisTest tt2=new ThisTest(20,"ok again!");
    
          
           System.out.println(tt0.increment().increment().increment().i);
    
           //tt0.increment()返回一个在tt0基础上i++的ThisTest对象,
    
           //接着又返回在上面返回的对象基础上i++的ThisTest对象!
    
        }
    
    }
  • 相关阅读:
    iOS 设计模式-委托模式
    python中时间操作总结
    list、dict、tuple的一些小操作总结
    DataFrame的构建及一些操作
    python连接mysql、oracle小例子
    sqlalchemy 映射的小例子
    crontab定时任务以及其中中文乱码问题
    vs2008试用版的评估期已经结束解决办法
    MongoDB 常用shell命令汇总
    把py文件打成exe
  • 原文地址:https://www.cnblogs.com/dayInAndOut/p/3657013.html
Copyright © 2020-2023  润新知