this.setName(name);跟this.Name=name;的差别:
两者是一样的,不会影响程序的运行,都是设置内容,随便怎么写,两者是没有差别的。
按快捷键alt+shift+s 提示出的内容,传递的量,没必要改成:
public void setTitle(String t){
title=t;
}
(原本提示显示的内容:public void setTitle(String title){
this.title=title;
}) 两者的效果其实是一样的。
2014.12.06
public boolean compare(Person per) {
Person p1=this;
Person p2=per;
if(p1==p2){
return true;
}
if(p1.name.equals(p2.name)&&p1.age==p2.age){
return true;
}else{
return false;
}
}
与此同时,我学到了:在java中的equals比较的是两个变量或者两个实例所指向的内存空间的值是不是相同;而==比较的则是两个变量或者实例所指向的内存空间是不是一样。
static 决定的是全局变量:
class Demowe{
private static int count = 0; //如果不加static显示的结果就是产生了1个对象!产生了1个对象!产生了1个对象!而不是产生了1个对象!产生了2个对象!产生了3个对象!因为count不是全局变量,每次运行程序的时候都是默认的是它为1,而不是
public Demowe(){
count++;
System.out.println("产生了"+count+"个对象!");
}
}
public class Demo{
public static void main(String[] args){
new Demowe();
new Demowe();
new Demowe();
}
}
static 类型的属性可以被类名称直接调用,在这边我们可以使用instance属性来声明static类型(也就是所说的构造方法私有化):
class Singleton{
static Singleton instance = new Singleton();
private Singleton(){
}
public void print(){
System.out.println("Hello world!");
}
}
public class Demo{
public static void main(String[] args){
Singleton s1=Singleton.instance;
s1.print();
}
}
系统登录验证:
class Check{
public boolean validate(String name,String password){
if(name.equals("jidsajsida")&&password.equals(12354)){
return true;
}else{
return false;
}
}
} //就是用来判断的一个函数类型
class Operate{
private String info[];
public Operate(String info[]){
this.info=info;
} //通过构造的方法来传入数值
public String login(){
Check check=new Check();
this.isExit();
String name=this.info[0];
String password=this.info[1];
String str=null;
if(check.validate(name, password)){
str="你输入的帐号和密码不刍符合,系统自动退出!" ;
}else{
str="错误的用户名和密码!";
}
return str;
}
public void isExit(){
if(this.info.length!=2){
System.out.println("输入的参数不正确,系统自动退出!");
System.out.println("格式为:jajdja j ajdja");
System.exit(1);
}
}
}
public class Demo{
public static void main(String[] args){
Operate operate=new Operate(args);
System.out.println(operate.login());
}
}
一般的都是分两个check和operate:check的作用是验证操作;operate的操作是封装check类的操作,并把check 的信息返回调用处。
在java的继承中,只允许多层继承,而不能多重继承:
错误的继承代码:
【
class A{}
class B{}
class C extends A,B{}
】这种继承方法是不对的,这算是多重继承;允许多层继承:
【(下面是多层继承)
class A{}
class B extends A{}
class C extends B{}
】