zoukankan      html  css  js  c++  java
  • Java基础之五、Java编程思想(1-7)

    一、对象导论

    1:多态的可互换对象

      面向对象程序设计语言使用了后期绑定的概念。

      当向对象发送消息时,被调用的代码直到运行时才能确定。也叫动态绑定

    2:单根继承结构

      所有的类最终都继承自单一的基类,这个终极基类的名字就是Object

    3:对象的创建和生命期

      对象的数据处于作用域,Java完全采用了动态内存分配方式(基本类型只是一种特例)

    二、一切都是对象

    1:基本类型

      基本类型是一个并非是引用的“自动”变量。这个变量直接存储“值”,并置于堆栈中

    2:Java中的数组

      Java确保数组会被初始化。而且不能在它的范围之外被访问

    3:作用域(scope)

      Java对象不具备和基本类型一样的生命周期。当用new创建一个Java对象时,它可以存活于作用域之外

      {

       String s = new String("a string");   } // End of scope 引用 s 在作用域终点就消失了。然而,s 指向的 String 对象仍继续占据内存空间

      import 关键字

      指示编译器导入一个包,也就是一个类库,Java中所有的代码都必须写在类里。特定类 java.lang 会被自动导入到每一个Java文件中。

    5:static 关键字

    • 只想为某一特定域分配单一存储空间,而不去考虑空间要创建多少对象,甚至根本就不创建任何对象。
    • 希望某个方法不与包含它的类的任何对象关联在一起。也就是说,即使没有创建对象,也能够调用这个方法
    • static作用于字段时,会改变数据的创建方式
    • static方法的一个重要用法就是在不创建任何对象的前提下就可以调用它;
    • static方法就是没有this的方法,不能直接调用非静态方法,但可以传递一个对象引用到静态方法里,然后通过这个引用(和this效果相同)来调用非静态方法和访问非静态数据成员。

    三、关系操作符

    1:== 和 != 比较的是对象的引用

    2:特殊方法equals() 的默认行为也是比较引用

    四、控制执行流程

    1:if else

    2:switch

      JDK1.7开始,switch开始支持String作为选择因子。在switch语句中,String的比较用的是String.equals()

      因此,需要注意,传给switch的String变量不能为null,同时switch的case子句中使用的字符串也不能为null

    五、初始化与清理

    1:方法重载

      重载方法,方法名相同,形式参数列表不同(参数列表又叫参数签名,包括参数的类型、参数的个数和参数的顺序,只要有一个不同就叫做参数列表不同)

    2:重载约束

    • 声明为final的方法不能被重载
    • 声明为static的方法不能重载,但是能够被再次声明。
    • 重载方法的返回类型可以相同也可以不同,但仅返回类型不同不足以成为方法的重载。

      class Animal {
        public static void walk() { System.out.println("Animal行走方法"); }
      }
      public class Horse extends Animal {
        public void walk(String s) {
        System.out.println("Horse四条腿行走");
        }
        public static void main(String [] args) {
          new Horse().walk("");
        }

      }

      class Animal {
        public static void walk() { System.out.println("Animal行走方法"); }
      }
      public class Horse extends Animal {
        public static void walk() { //重新定义
        System.out.println("Horse四条腿行走");
        }
        public static void main(String [] args) {
        new Horse().walk();
        }

      }

    3:成员初始化

      有变量在使用前都能得到恰当的初始化。

      Java 中类的成员变量会被自动初始化,但是方法里头的局部变量不会被自动初始化

      自动初始化的进行,它将在构造器被调用之前发生

      成员变量是基本类型,Java会自动初始化初值0

      成员变量是引用类型,Java会自动初始化初值null;

    4:对象的创建过程

      类加载检查-->分配内存-->初始化零值-->设置对象头-->执行成员变量的初始化-->执行init方法,执行构造方法

    5:数组初始化

      初始化: 

      • int[] a = new int[3]; 初始化各元素值为0,对于boolean,初始值为false;
      • int[] a = {1, 2, 3}; 初始化元素分别为1, 2, 3;

    六、访问权限控制

    • 同一个.java文件,只能有一个与文件同名的public类,可以有其它非public类;
    • 同一个package内的不同文件中的类,可以互相访问。
    • 不同package中的类,如需访问,需要使用全限定名,如biz.superalloy.MyClass或通过import把biz.superalloy包引进来;
    • default有时候也称friendly,它是针对本包访问而设计的
    • 类中的成员变量,不声明访问修饰符时,为“包访问权限”,有时也表示friendly,同一个文件的不同类之间可以互相访问。
    • 如果没能为类访问权限指定一个访问修饰符,它将会默认得到包访问权限。
    • 1. public修饰符具有最大的访问权限,可以访问任何一个CLASSPATH下的类,接口、异常等。它往往对于对外的情况,也就是对象或类对外的一种接口形式。
    • 2. default有时候也称friendly,它是针对本包访问而设计的,任何处于本包下的类,接口,异常等,都可以互相访问,即使是父类没有用protected修饰的成员也可以。
    • 3. protected修饰符它的主要作用就是保护子类的。它的含义在于子类可以使用它修饰的成员,其他的不可以,它相当于传递给子类的一种继承的东西。
    • 4. private修饰符它的访问权限仅限于类的内部,是一种封装(Java的三大特点之一,继承,封装和多态)的体现。

     

    七、复用类

    1:@Override注解-它的作用是告诉编译器我想重写这个方法,避免不必要的异常

    2:final关键字-使用到final的三种情况:数据、方法和类

    • final 基本类型,数据编译期常量在定义(声明)时必须对其赋值(声明时也可以不赋(此时叫空白final),但必须在构造器中赋值,所以final域在使用前总是被初始化)。
    • final常量常与static一起使用,强调只有一份。
    • final 对象引用
    • final参数这一特性主要用来向匿名内部类传递数据
    • final方法-锁定方法,以防任何继承类修改它的含义。这是出于设计的考虑;
    • 类中所有的private方法都隐式地指定为是final的。由于无法取用private方法,所以也就无法覆盖它
    • final类不希望它有子类。因为final类禁止继承,所以final类中所有的方法都隐式指定为是final的,因为无法覆盖它们

    3:初始化及类的加载

      类的代码在初次使用时才加载,通常是指加载发生于构造类的第一个对象之时,但是当访问static域或static方法时,也会发生加载

      (构造器也是static方法,尽管static关键字并没有地写出来。因此更准确地讲,++类是在其任何static成员被访问时加载的++。)

    4:初始化

      初次使用之处也是staic初始化发生之处

  • 相关阅读:
    LOJ#10106. 「一本通 3.7 例 2」单词游戏
    小木棍(爆搜减枝)
    倍增求lca(模板)
    2018年第九届蓝桥杯C/C++A组省赛(最后一题)
    LOJ#10172. 「一本通 5.4 练习 1」涂抹果酱
    【[APIO/CTSC2007]动物园】状压DP
    c++滚动数组
    状态压缩入门(附经典题目和题解)
    小 M 的算式(dfs)
    P与NP问题详解
  • 原文地址:https://www.cnblogs.com/sun-null/p/12359179.html
Copyright © 2011-2022 走看看