java零碎知识
1.方法中不能再定义方法,但是可以在方法中定义一个类(属于内部类),再在类中定义方法
2.for 和 while 的小区别:
控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。在已知循环次数的时候使用推荐使用for,循环次数未知的时推荐使用while。
3.重载和重写的区别:
重载(overload)
重载是在一个类中,同名方法拥有不同的参数列表则视为重载。不同的参数列表包括:参数数量不同,参数类型不同,参数顺序不同。重载对于返回类型没有要求,所以不能通过返回类型去判断是否是重载方法。
总结:
1.重载必须有不同的参数列表
2.重载对于返回类型没有要求
3.重载对于修饰符访问权限没有要求
重写(override)
重写是在子类中重写父类的方法,方法名,参数列表,返回类型必须相同。
总结:
1.重写存在于父类与子类之中
2.重写方法必须与被重写方法相同的方法名,参数列表,返回类型
3.重写方法的修饰符访问权限必须大于等于被重写方法修饰符访问权限
4.重写方法抛出的异常必须小于等于被重写方法抛出的异常
4.java访问修饰符
5.数组的创建方式
1.动态方式: int[] arr = new int[3];
2.静态方式一:int[] arr = new int[]{1,2,3,4,5};
3.静态方式二:int[] arr = {1,2,3,4,5};
其中,静态方式二不能拆开:int[] arr; arr = {1,2,3,4,5}
6.成员变量和局部变量的区别
7.this.含义、this()、super()
this代表所在类当前对象的引用(地址值),即对象自己的引用。
记住:方法被哪个对象调用,方法中的this就代表那个对象。即谁在调用,this就代表谁
this()基础用法 JAVA中super和this调用构造函数
8.构造方法
当一个对象被创建时候,构造方法用来初始化该对象,给对象的成员变量赋初始值。
小贴士:无论你与否自定义构造方法,所有的类都有构造方法,因为Java自动提供了一个无参数构造方法,
一旦自己定义了构造方法,Java自动提供的默认无参数构造方法就会失效。
注意事项
- 如果你不提供构造方法,系统会给出无参数构造方法。
- 如果你提供了构造方法,系统将不再提供无参数构造方法。
- 构造方法是可以重载的,既可以定义参数,也可以不定义参数。
9.JavaBean
JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制(反射机制)发现和操作这些JavaBean 的属性。
10.匿名对象
11.Java集合不能存放基本数据类型,只存放对象的引用
12.String类特点
- 字符串不变:字符串的值在创建后不能被更改。
String s1 = "abc";
s1 += "d";
System.out.println(s1); // "abcd"
// 内存中有"abc","abcd"两个对象,s1从指向"abc",改变指向,指向了"abcd"。
- 因为String对象是不可变的,所以它们可以被共享。
String s1 = "abc";
String s2 = "abc";
// 内存中只有一个"abc"对象被创建,同时被s1和s2共享。
- “abc” 等效于 char[] data={ ‘a’ , ‘b’ , ‘c’ } 。
例如: String str = "abc";
相当于:
char data[] = {'a', 'b', 'c'};
String str = new String(data);
// String底层是靠字符数组实现的
13.Static关键字
类变量
当 static 修饰成员变量时,该变量称为类变量。该类的每个对象都共享同一个类变量的值。任何对象都可以更改 该类变量的值,但也可以在不创建该类的对象的情况下对类变量进行操作。
- 类变量:使用 static关键字修饰的成员变量。
定义格式:
static 数据类型 变量名;
举例:
static int numberID;
静态方法
当 static 修饰成员方法时,该方法称为类方法 。静态方法在声明中有 static ,建议使用类名来调用,而不需要 创建类的对象。调用方式非常简单。
- 类方法:使用 static关键字修饰的成员方法,习惯称为静态方法
定义格式:
修饰符 static 返回值类型 方法名 (参数列表){
// 执行语句
}
举例:在Student类中定义静态方法
public static void showNum() {
System.out.println("num:" + numberOfStudent);
}
静态方法调用的注意事项:
-
静态方法可以直接访问类变量和静态方法。
-
静态方法不能直接访问普通成员变量或成员方法。反之,成员方法可以直接访问类变量或静态方法。
-
静态方法中,不能使用this关键字。
小贴士:静态方法只能访问静态成员。
调用格式
被static修饰的成员可以并且建议通过类名直接访问。虽然也可以通过对象名访问静态成员,原因即多个对象均属 于一个类,共享使用同一个静态成员,但是不建议,会出现警告信息。
格式:
// 访问类变量
类名.类变量名;
// 调用静态方法 类名.
静态方法名(参数);
静态代码块
- 静态代码块:定义在成员位置,使用static修饰的代码块{ }。
- 位置:类中方法外。
- 执行:随着类的加载而执行且执行一次,优先于main方法和构造方法的执行。
14.执行子类的构造方法是否会调用父类的构造方法
15.访问修饰符不修饰变量
变量和属性是有区别的:
变量是方法体中定义的du,我们称为临时变量。
属性是类体中定义的。
- 而权限标示符只用于修饰属性和方法。不修饰变量。
- 方法中定义的临时变量在方法调用完成之后就不存在了,不需要用修饰符定义