大一时开始学习java,知道现在开始做项目用于实践当中才真正的明白它的一些基本的方法。
我就用一个实例来解读最基本的java思想
package test.java;
/**
* 此类用来测试一些最基本的java编程思想
*/
public class Person {
private String name;// 声明成private只有在类的内部才能用(类名.)的方法调用。
public int age;//共有成员变量
protected final int headNum = 1;// 1.声明称protected一般情况下是为了继承,只有在一个包中的类才能访问。2.声明为final的成员变量的值不能再次被更改。
/**
* 所有的变量无论声明成私有的还是共有的都能够通过调用类中的方法来获得
*/
public String getName() {//get方法用于获取成员变量的值
return name;
}
public void setName(String name) {//set方法用于给成员变量赋值
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getHeadNum() {
return headNum;
}
@Override
public String toString() {// toString是为了能够方便的输出类所有的成员变量,若果不构建toString方法无法直接输出一个类。
return "Person [name=" + name + ", age=" + age + ", headNum=" + headNum
+ "]";
}
public static void cout() {// 声明成静态方法可以不用构建类直接使用,也可以在类外通过(类名.)调用。
System.out.println("aa");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Person person = new Person();
person.name = "aa";//在自己的main方法中可以这样使用,但在其他类中不能。
}
}
接下来是测试类:
package test.java;
public class Test {
/**测试
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Person.cout();//在其他类中静态方法的使用
Person person=new Person();
person.setName("aa");//只能用set方法给name赋值不能用person.name="a";
person.age=1;//由于age声明成了共有变量因此可以这样
System.out.println(person.headNum);
System.out.println(person);
}
}
另外再说一下另一个比较迷惑人的地方:方法参数的传递
参数传递的实质类似于一条赋值语句,将实参保存值的副本传递给形参。因此对形参的任何修改都不会影响实参的值。
但是需注意:如果将一个对象传递给一个方法,实际上传递的是这个对象的引用,复制给形参的是这个对象的地址,因此形参名和实参名互成了对方的别名。如果通过被调用的形参引用而改变的对象的状态,也就改变了实参引用的对象。若果改变了形参引用本身(使其指向一个新对象),并不影响实参,实参仍然指向原对象。