合抱之木,生于毫末;九层之台,起于垒土;千里之行,始于足下。
目录
1.println 不会从新行开始打印文本。它会在当前行上打印文本,但会使下一个文本打印在新行上。
2.Java 语言区分大小写。 int a 和 Int a 不同
3.当你添加字符串和数字时,结果始终是一个字符串
4.Java里方法的参数传递方式只有一种:值传递。即将实际参数的副本(复制品)传入方法内,而参数本身不受影响。
》形参是基本数据类型,将实参基本数据类型变量的“数据值”传递给形参。
》形参是引用数据类型,将实参引用数据类型变量的“地址值”传递给形参。
5.this、super 关键字的使用:
this理解为当前对象(用于属性和方法中)或当前正在创建的对象(用在构造器中)。
this调用属性、方法:
class person{
private int age = 0;
private String name ;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;//此时因为形参与实例变量同名,所以要显式的使用this来修饰实例变量
}
}
this调用构造器:
①在类的构造器中,可以在第一行显示的使用this(形参列表),来调用本类中指定的其他构造器。
② 构造器不能通过this(形参列表)方式调用自己。
③如果一个类中有n个构造器,则最多有n-1个构造器使用了this(形参列表)
④构造器内部,最多只能声明一个this(形参列表)。用来调用其他的构造器。
super关键字的使用:
super理解为:父类的。可以用来调用属性、方法、构造器。
super的使用:
①我们可以在子类的方法或者构造器中,通过使用super.属性或者super.方法的方式,显式的调用父类的属性和方法,通常可以省略。但若子类中定义了与父类重名的属性或方法时,则必须使用super关键字。(super会直接在父类中去找这个属性或方法,而this会在当前类中寻找,找不到则会在父类中寻找)。
②当父类中的方法被子类重写时,我们仍可以通过 super.方法的形式在子类中来调用父类被重写的方法。
6.“==”和equals的区别:
“==”作用于基本数据类型时,比较的是值,作用于引用数据类型时比较的时地址值;
equals是一个方法,只能通过对象调用,未被重写时和“==”作用相同,在被重写后如String、 date、file比较的是其中的内容
7.Object类中tostring的使用:
Ⅰ:当我们输出一个对象的引用时,实际上就是调用该对象的toString()方法
Ⅱ:object类中tostring的定义:
public String toString(){
return getclass().getname()+"@"+Integer.toString(hashCode);
}
Ⅲ:String,Data,File,包装类等都重写了toString方法
8.对象的向上转型和向下转型:
设有父类Person和子类man和woman;
Person p = new man();//向上转型,即多态。对象的多态性:父类的引用指向子类的对象
man m = (man)p;//向下转型,类似于强制类型转换。多态的使用:当调用字父类同名同参数的 方法时,实际执行的时子类重写父类的方法----虚拟方法的调用
特点:编译看左,执行看右
p只能调用 Person类的属性和方法,但执行时调用的却是man类的。为了调用Person类的属性和方法,要向下转型。
注意点:
Ⅰ:编译通过,运行不通过
例1:Person p = new woman();
man m = (man)p;
例2:Person p = new Person();
man m = (man)p;
Ⅱ:编译通过,运行也通过
Object obj = new woman();
Person p = (Person)obj;
Ⅲ:编译、运行都不通过
man m = new woman();
9.instance of 操作符
x instance of A:检验x是否为类A的对象,返回值为boolean型。
要求x所属的类与类A必须是子类和父类的关系,否则编译错误。
如果x属于类A的子类B,x instance of A值也为true。
10.基本数据结构和包装类
包装类调用tostring方法输出的内容为数值型。
包装类到基本数据类型为:调用包装类Xxx的xxxValue()。
JDK5.0新特性:自动装箱和自动拆箱
int i = 0;
Integer n = i;
String 类型转换为基本数据类型和包装类:调用包装类的parsexxx;
例如:string s = "abc123";
Integer i = Integer.parseInt(s);//返回值为int型
基本数据类型和包装类转换为string类型:1.连接运算 2.调用string类重载的valueof(Xxx xxx);
例如:float f = 26f;
String s = String.valueof(f);
11.static关键字的使用
static可以用来修饰属性,方法,内部类,代码块。可以直接通过类名调用。
static修饰属性:被static修饰的属性称为静态变量(类变量),没有static修饰的称为实例变量(非静态变量)。静态变量随着类的加载而加载且早于对象的创建。由于类只会加载一次,则静态变量在内存中也只加载一次,存在方法区的静态域中。
实例变量:当我们创建了类的多个对象,每个对象独立的拥有一套类中的非静态属性,当修改其中一个对象的非静态属性时,不会对其他对象的非静态属性产生影响。
静态变量:当我们创建了类的多个对象,对个对象共享同一个静态变量。当通过某一个对象修改静态变量时,会使其他对象调用此静态变量时,是修改过的。
static修饰方法:
①随着类的加载而加载,可以通过类.静态方法的方式进行调用
②静态方法中只能调用静态方法或属性,而非静态方法中可以调用非静态或静态的属性或方法。
③静态方法中不能使用this和super关键字。
顺便提一个小知识点:Java中的JUnit单元测试
步骤1.选中当前项目,右键选择 build path->add libraries->JUnit5->下一步;
2.创建Java类,进行单元测试。对类的要求是public的,提供公共无参的构造器。
3.在此类中声明单元测试方法。对方法的要求是public的,无返回值类型,无参数。
4.在单元测试方法前加上注解@Test,并在类中导入 import org.JUnit.Test
5.声明好单元测试方法后,左键选中方法名,右键选择 run as ->JUnit Test;
结果:处理结果没有异常,则显示绿条;
若出现异常,则显示红条。
import org.JUnit.Test public class JUnitTest{ @Test public void testxxx{ } }