一、构造方法
构造方法:(构建创造)方法,在堆内存创建对象,可以给对象赋值
格式:(同时满足)
名字要和类名相同
不能有void、static
不能有返回值
使用:
new Person();// 构造方法的调用只有new才能用构造方法
二、成员方法的分类及使用
属于每一个对象的方法:
返回值:
有返回值 public int hasValue() {
return 100;
}
无返回值 public void noValue() {
System.out.println(300 + 400);
}
参数:
有参数 public void hasParam(int number) {
System.out.println("您输入的参数是:" + number);
}
无参数 public void noParam() {
System.out.println(100);
}
三、基本类的标准写法
类名、成员变量(private)、构造方法(无参、有参)、成员方法(自定义的方法没有static关键字)、get/set(封装,可以做业务逻辑判断)
class Student {
// 成员变量
private int number; //学号
private String name; //姓名
private int age; //年龄
// 构造方法
public Student() {} //不要省略,自己加上
public Student(int number, String name, int age) {//见名知意
this.number = number;
this.name = name;
this.age = age;
}
// 成员方法
public void study() {
System.out.println("学生" + name + "在学习");
}
// 不是全部的set和get方法都需要,看需求
public void setNumber(int number) {
this.number = number;
}
public int getNumber() {
return this.number;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setAge(int age) {
this.age = age;
}
public String getAge() {
return this.age;
}
}
public static void main(String[] args) {
// 调用自定义类有方式1:用无参的构造方法,用set赋值,get取值
Student zhaosi = new Student();
zhaosi.setNumber(11190002);
zhaosi.setName("赵四");
zhaosi.setAge(18);
zhaosi.study();
// 调用自定义类有方式2:用有参数的构造方法
Student liuneng = new Student(11190001, "刘能", 60);
liuneng.study();
}
创建一个对象的步骤
1、加载字节码文件(main方法那个)
2、main方法进栈(方法区)
3、加载第二个字节码(Student.class)文件
4、在main方法中局部变量(栈内存)
5、在堆内存创建对象
6、有默认值(byte、short、int、long【0】char【'\u0000'】boolean【false】引用类型【null】)
7、内存地址值给局部变量
static关键字
static关键字可以修饰方法(main),成员属性(country)
加载时机随着字节码加载而加载,优先堆内存中创建,加载到方法区中的静态区
每个对象可以共用当前的静态数据,静态数据依附于类,不用创建对象就可以调用Math.random();
main方法
public:公共的权限最大的,可访问的
static:静态的,可以通过类名直接调用的
void:没有返回值的
main:java必须这么做,写错运行不了
String[] args:执行java程序的时候还可以传递参数
Api文档
java语言中,很多的类都已经提供了
经验分享(我们在软件需求的时候有些类和我的业务逻辑有关系,例如日期和支付,日期这样的功能已经在javaapi中有了,可以直接使用java中现成的类Date,还可以自己写没有的业务类)
javadoc -d .\帮助文档 -author -version ArrayTool.java
/**
* 当前类是可以对数组做常见操作的类
*
* @author 王鹏 18888888888
* @version 1.0 2015-11-29 17:27:00
*/
public class ArrayTool {
private ArrayTool() {}
/**
* 遍历数组中的每个元素,显示出来
* @param arr 请传入一个数组
*/
public static void print(int[] arr) {
...
}
/**
* 判断num数字是否存在数组arr中,返回它的下标位置
* @param arr 请传递一个数组
* @param num 请传入一个数字
* @return -1、没有找到,否则返回下标值
*/
public static int getIndex(int[] arr, int num) {
...
}
}
ArrayTool.print(..);
ArrayTool.getIndex(参数1, 参数2);