首页 > 编程语言 > 详细

Java暑期学习笔记(2)

时间:2018-08-29 21:47:19      阅读:142      评论:0      收藏:0      [点我收藏+]

# 18/07/10 #
* 1.非静态的成员方法,既可以访问静态成员也可以访问非静态;
    静态的成员方法,只可以访问静态成员,不可以访问非静态。
* 2.在静态方法中是没有this关键字的
    * 如何理解呢?
        * 静态是随着类的加载而加载,this是随着对象的创建而存在。
        * 静态比对象先存在。
* 3.如果一个类中所有方法都是静态,要将构造方法私有,目的是不让其他类创建本对象,直接用类名,调用即可。arrayTool.print();
* 4.通过javadoc命令生成说明书
    * @author(提取作者内容)
    * @version(提取版本内容)
    * javadoc -d 指定的文件目录 -author -version ArrayTool.java
    * @param 参数名称//形式参数的变量名称@return 函数运行完返回的数据
* 5.获取随机数的方法
    * public static double random():返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。
* 6.获取一个1-100之间的随机数
    * int number = (int)(Math.random()*100)+1;
* 7.this.成员方法 调用本类的成员方法,也可以调用父类的方法;
    super.成员方法 调用父类的成员方法
* 8.构造代码块(在类中方法之外)每创建一次就会执行一次,优先于构造函数执行
* 9.静态代码块随着类的加载而加载,只执行一次,优先于主方法实行
* 10.子类重写父类方法时,访问权限不能更低,最好就一致。
     父类静态方法,子类也必须通过静态方法进行重写
* 11.方法重写(Override):子类中出现了和父类中方法声明一模一样的方法。与返回值类型有关,返回值是一致(或者是子父类)的。
   方法重载(Overload):本类中出现的方法名一样,参数列表不同的方法。与返回值类型无关。
* 12.final修饰特点
    * 修饰类,类不能被继承
    * 修饰变量,变量就变成了常量,只能被赋值一次
    * 修饰方法,方法不能被重写
* 13.final关键字修饰局部变量:引用类型,是地址值不能被改变,对象中的属性可以改变
* 14.多态中的成员的成员变量(Father f = new Son();)
 * 编译运行都看父类 
* 15.多态中的成员的成员方法
 * 编译看父类,运行看子类
 * 静态方法 编译运行都看父类
* 16.当做参数的时候用多态最好,因为扩展性强

        method(new Dog());
        method(new Cat());
        public static void method(Animal a){
            c.eat();
        }
 * 关键字 instanseof 判断前边的引用是否是后边的数据类型

        if(a instanceof Cat){
            Cat c = (Cat)a;
            c.eat();
            c.catchMouse();    
        }
* 17.抽象类中的子类要么是抽象类,要么重写抽象类中的所有方法
* 18.abstract
   * abstract不能修饰成员变量。有构造方法。
   * abstract和static 不能共存。static可以用类名调用,但调用抽象方法没有意义。
   * abstract和final abstract强制子类重写,但final不让子类重写
   * abstract和private private不让子类访问
* 19.接口
 * 接口中的方法都是抽象的,不能定义非抽象的(public abstract)
 * 接口不能被实例化
 * 成员变量只能是常量(默认修饰符:public abstract 位置可以相互交换)
 * 没有构造方法
 * 类可以同时实现多个接口--class Demo implements InterA,InterB{...}
 * 接口与接口是继承关系,可以单继承,也可以多继承 

        interface Inter {
            public abstract void print();
            }
        class Demo implements Inter{
            public void print(){
                System.out.println("print!");    
            }    
        }
* 20.如何编译运行带包的类
    * a:javac编译的时候带上-d即可
        * javac -d . HelloWorld.java
    * b:通过java命令执行。
        * java 包名.HellWord
* 21.在开发中用的都是导入具体的类
* 22.package---import----class
* 23.四种权限修饰符

                    本类     同一个包下(子类和无关类)    不同包下(子类)    不同包下(无关类)
        private     Y        
        默认            Y        Y
        protected    Y        Y                            Y
        public        Y        Y                            Y                Y

* 24.内部类

        main 创建内部类对象 Outer.Inner oi = new Outer().new Inner();
         class Outer{
            private int num = 10;
            class Inter{
                public void method(){
                    System.out.println("hello");    
                    System.out.println(Outer.this.num);//10他能获得外部类名        
                }
            }
        } 

    * 成员内部类被静态修饰后的访问方式是:
     * 外部类名.内部类名 对象名 = 外部类名.内部类对象;
* 25.局部内部类只能在其所在的方法中访问
  * 局部内部类在访问他所在方法中的局部变量必须用final修饰,为什么?
  * 因为当调用这个方法时,局部变量如果没有用final修饰,他的生命周期和方法的生命周期是一样的,当方法弹栈,这个局部变量也会消失,那么如果局部内部类对象还没有马上消失想用这个局部变量,就没有了,如果用final修饰会在类加载的时候进入常量池,即使方法弹栈,常量池的常量还在,也可以继续使用。但是jdk1.8取消了这个事情,所以我认为这是个bug

Java暑期学习笔记(2)

原文:https://www.cnblogs.com/yaopeiyun/p/9557068.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!