Java基础关键知识点记录

1、创建数组时必须指定存储元素的个数,即必须指定数组长度,与C不同。C对一维数组初始化时可以不指定个数,编译系统会根据初始化时的数据自动定义数组长度。
2、数组创建后元素将被赋予默认值,数值型为0,char型为’\u0000’,boolean型为false,对象数组为null。
3、
1)与文件名相同的类叫主类。
2)一个.java文件里可以有多个类,但只能有一个主类。
3)只有主类是公用public的。
4)Java运行系统都是运行主类中的main方法。
4、构造方法的方法名必须与类名相同,构造方法没有返回值。构造方法用于初始化对象。一个类可以不声明构造方法,此情况下类中隐含声明了一个方法体为空的无参构造方法,叫默认构造方法。

A a = new A();//创建A类的对象
这里其实就是通过new操作符调用构造方法创建对象。以前的理解是通过类名创建的对象,但其实是调用构造方法。
5、静态变量和静态方法(static)
1)原本一类的实例变量属于类中的各自的对象实例,而静态变量使类中的所有对象实例共享该变量。
2)静态方法使得不用创建该类的实例就能调用该方法。
3)要声明一个常量是在静态变量声明中加上final
4)在静态方法中是不能使用this预定义对象引用的,即使其后边所操作的也是静态成员也不行。
6、实例方法和静态方法的调用
实例方法的调用:对象名.方法名();
静态方法的调用:
I. 类名.方法名(参数);
II. 对象名.方法名(参数);
PS. 建议用类名.方法名()调用静态方法,这样容易认出静态方法。
7、同上访问静态变量也使用两种方法,但更加建议用 类名.变量名 调用静态变量

8、把变量或方法设置为实例还是静态的判断
如果依赖于类的具体实例就设置为实例变量或方法。
不依赖则设置为静态,如Math类中的random、pow方法不依赖任何实例对象,因此都是静态方法。

9、类属变量和局部变量同名时,局部变量优先,同名的类属变量将被隐藏。
为了避免混淆,除了方法中的参数和for循环中的控制变量,不要在类中两次声明同名变量。

10、this关键字
引用隐藏的静态变量可以用类名.变量名;引用隐藏的实例变量要用到this。
this.i = i意思是将参数i(第二个)赋值给调用对象的数据域,this代表了调用实例方法的对象。
this也可用于构造方法,以调用同个类中的其他构造方法。约定若一个类有多个构造方法,尽量使用this(参数表)的方式实现。约定在构造方法中this(参数表)出现在任何语句之前。

11、可见性修饰符
private:仅类中可见 public:所有可见 protected:子类或者同包里的任何类 其他默认:包内可见
子类可以重写父类方法时可以提高方法的可见性,但不能降低,例如父类是public,子类重写时也只能是public

12、类的封装
类的使用者不知道类是如何实现的、实现的细节经过包装对用户隐藏起来,叫类的封装。、

13、内部类
内部类可以引用外部类中的数据和方法。
静态内部类不能访问外部类的非静态成员。
可以在外部类中创建内部类对象,也可以在其他类中创建内部类对象,如果内部类是非静态的,则必须先创建外部类对象,然后用
外部类.内部类 内部对象名= 外部类对象 .new内部类();
如果内部类是静态的,则创建对象的语法:
外部类.内部类 内部对象名=new 外部类.内部类();

14、String类创建的字符串不能被修改,StringBuffer类创建可修改的字符串,StringTokenizer是一个工具类,可以从字符串中提取令牌。
15、String string = new String(“123”);快捷初始化为
String string = “123”; //该语句创建规范字符串对象
不同的对象利用快捷初始化或intern()方法创建同一字符串时,他们存储在同一对象中,而利用常规方法则创建的是String对象,二者不是一个对象。
16、字符串的比较
==运算符只能检测两个字符串是否指向同一对象,要比较字符串中的字符则可用:1)方法equals(String),boolean型
2)方法compareTo(String),int型,相等返回0,按字典序小于则返回小于0的数,大于则返回大于0的数。
17、字符串的转换
toCharArray把字符串转换成字符数组。String(char[])或valueOf(char[])把字符数组转换为字符串。
valueOf的参数类型还可以是int、double、long、int和float。
18、StringBuffer类
19、StringTokenizer类:字符串令牌类
用以将字符串分解为片段。可以设置界定符,将字符串分为一个个片段,这样的片段称为令牌。
20、字符串扫描类Scanner
可以设定一个单词为界定符,默认界定符为空格。
21、关键字super
super指向使用它的类的父类,用于调用父类的方法和构造方法。
调用构造方法的语句为super();或super(参数);
调用构造方法的语句必须出现在子类构造方法的第一行,且这是调用父类构造方法的唯一方法。
与属性和方法不同,父类的构造方法不会传给子类,因此必须使用super来调用。
22、构造方法链
构造方法可以调用覆盖的构造方法或父类的构造方法,如果它们都未被显式地调用,则编译器会默认把super()当作构造方法的第一条语句,即隐含地声明了无参构造方法,而在调用无参构造方法前会先默认调用父类的无参构造方法,若此时父类并没有无参构造方法,则会编译错误,因此一个类设计成子类时,最好显式提供一个无参构造方法。
23、方法覆盖(重写)
super()也可调用父类的方法,但通常没必要,因为子类继承了父类的方法,但有些情况super()必不可少:方法覆盖
覆盖的方法必须与父类方法具有相同头标志和相同的返回值类型。访问访问父类的方法时就必须用 super.方法名 来访问。
只有当父类方法可被访问时才能被子类覆盖,私有方法不能被覆盖。如果子类定义的方法在父类中是私有方法,则两个方法没有任何关系。
24、动态绑定 (多态的表现之一)
由于继承的关系,父、子类同名方法的实现可能有多种方式,采用哪一种实现方式由JVM在运行时动态决定,这种能力叫动态绑定。
原则是:一个对象是调用同名方法时,从创建该对象的类开始,往父类方向一直找,直到找到第一个与要调用的方法同名的方法为止便不再向上找,然后就调用找到的这个方法。
25、对象类型转换
对象类想转换可以把一个类的对象转换为继承链上的另一个对象上。向上转换总是可行的,因为子类的实例一定是父类的实例;而向下转换必须用使用强转,将父类实例转换为子类的变量。
Object o = new Student()是合法的,这叫隐式转换。
26、final类、变量、方法
final类不能作为父类,不能被继承。(终极类)
final方法不能被子类重写。
方法内的fianl变量就是常量
27、java不支持多重继承,一个子类只能由一个父类。使用接口可以实现多重继承的效果。
28、抽象类和方法
抽象类不能创建实例。抽象方法只有方法头,没有实现,由子类来实现。
包含抽象方法的类必须声明为抽象类。
一个抽象父类的非抽象子类必须实现父类的所有抽象方法,也就是说,如果一个抽象父类的子类无法实现所有抽象方法,那它必须声明为抽象的。
具体类的父类可以有是抽象类的子类。
子类可以重写父类的方法并将其声明为抽象方法。

29、接口只包含常量和抽象方法。接口被认为是特殊的类。
接口实际上就是定义了一个一般方法的特殊类。
implement接口的类的实例也是这个接口类的实例。
接口类的数据必须是常量,方法只有一个头标志,没有实现部分。
所有数据域都是public static final 所有方法都是pucblic abstract的,声明时可以忽略。
一个类可以implement多个接口。
接口也可以extends多个接口,实现这个接口的类也必须实现该接口继承的所有接口中的抽象方法。接口只能extends其他接口,不能扩展类。
30、什么时候用抽象类或接口
强是关系的明显描写父子关系用类模拟。
弱是关系指的是对象拥有某种关系,用接口模拟。
说白了接口的作用就是实现接口中的抽象方法。
31、当有的方法需要用对象作为参数时,基本数据类型可以被包装为包装类:把基本数据类型包装成对象。如int包装为Integer类,double包装为Double类。
32、基本类型和包装类之间的自动转换
基本—>包装叫装箱,反过来叫开箱。
将一个基本数据类型用在对象该为参数的环境时,编译器将自动装箱,反过来会自动开箱。
33、克隆接口Cloneable
克隆接口是一个空接口,成为标记接口。标记接口表明一个类具有某个必备的属性。一个实现了克隆接口的类就被标记为可复制的,它的对象可以使用Object类的clone()方法进行克隆。
34、类的设计原则:一个类应该描述一个单一的实体,类的所有操作在逻辑上相互配合,类有各自的职责。
类是为了可重用而设计的,一般情况下,应该提供公用的无参构造方法,并重写Object类中的equals方法和toString方法。不论何时重写equals方法都应该重写hashCode()方法。如果没有显式的构造方法,系统就假定有一个公共的默认无参构造方法。
35、一个类可以提供两种合约。
1)对类的使用者,数据域为private,方法为public
2)为类的扩展这,数据域、方法均为protected,允许从保护增加为公用,但不能违反合约去修改实现。
类应该使用private隐藏数据,若可读,则提供get方法,可修改则提供set方法。
36、一个类的内容建议摆放顺序:数据域、构造方法、一般方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值