方法的重载:方法名称相同,但是参数的类型和个数不同,通过传递参数的个数和类型不同来完成不同的功能。
正确的重载;
public void tell (int i,String j){}
public void tell (String j){}
错误的重载:
public int tell (int i,String j){}
public String tell (int i,String j){}
类名最好要大写
类(抽象)——实例(或对象)
Person per = null; //声明
per = new Person(); //实例化
per.name = “zhangsan”; //对象.属性
per.age = 10;
per.tell(); //对象.方法
通过占内存指向了对应的堆内存空间(用new开辟)
错误:空指针异常,没有new,就直接赋值
“Exception in thread “main”java.lang.NullPointerException”
面向对象的三大特征:封装(对外部不可见)、继承(扩展类的功能)、多态(方法重载、对象的多态性)
方法的递归(方法自己调用自己):遍历
封装性目的:保护某些属性和方法不被外部看见
封装的实现:为属性和方法进行封装是通过关键字private声明的
实现该属性的set和get方法,为外部所访问
匿名对象:没有特定的引用指向它
eg: new student().tell(); 只使用一次,想再使必须再次创建,用完后变成垃圾对象。
正常情况下:Student std = new Student();
Std.tell();
构造方法:
实例化就是按照类的设计给对象分配内存并初始化
构造方法是类的一个特殊方法:1.与类同名 2.不能有返回类型
注:不能有返回类型并不能代表不能有返回值,实际上它要返回对象在内存中的开始地址。
构造方法可以重载,并且我们把没有任何参数的构造方法成为默认构造方法。
注:在JAVA中如果程序员没有提供构造方法,则编译器会自动提供一个默认的构造方法;若程序员提供了,则编译器就不会提供(每个类在实例化后都会调用构造方法,若没有,程序在编译过程中会创建一个无参的什么都不做的构造方法)。
构造方法主要是为类中的属性初始化
郑重说明:以下内容源自weiers的你真的理解Java的按引用传递吗?文章的总结,并不属于原创范围!!!!!
引用传递:
误区一:String str = “123“;
可能存在问题,java会将存放在字符串常量池中(当再次声明一个同样内容的字符串时将会使用字符串常量池中的那个内存,而不会重新分配。)
Stringstr = new String (“123”);
指向堆区的内存会引用传递。(不太明白)
误区二:String在内存中无法修改
new一个对象时在堆区,栈上保存的是地址,引用传递地址的一个拷贝,这个传递的是地址数值的一个拷贝。所以Java中的按引用传递实质上是传递该对象的地址,该地址其实是按值传递的,改变该地址的值毫无意义,只会失去对真实对象的掌控。