import java.util.Date;
public class Student{
private int id;
private String name;
public static Date date;
public Student(){
this(0001);
}
public Student(int a){
this.id=a;
}
public setname(String s){
this.name=s;
}
public getname(){
return this.name;
}
public static void setgrade(Date date1){
Student.date=date1;
}
}
类抽象是指将类的实现和使用分离,类的使用者不需要知道类时如何实现的;实现的细节经过封装,对用户隐藏起来,这称为类的封装;
类的成员(数据和方法)修饰符有public,private,protected和包内私有(啥都不加);public是所有的类都允许访问,private是只允许本类访问,离开该类访问将导致错误;protected是类的子类访问和而包内私有是同一个包内的类可以访问;
通常情况下,我们将类的数据成员定义为private,使得类更易于维护;如果想让数据变得可读,只需提供get方法;如果想让数据可更新,应该提供set方法,例如Student中的name;
注意,不要从构造方法中传入参数来初始化静态数据,最好使用set方法改变静态数据,如Student中的date;
上文中的关键字this是指向调用对象本身的引用名;一种常见的做法是引用类的隐藏数据域;隐藏的静态变量可以通过“类名.静态变量”的方式引用,隐藏的实例变量就需要使用关键字this来引用,例如Student中的date和id;
如果一个局部变量和一个类变量具有相同的名字,那么局部变量优先,而同名的类变量将被隐藏;
//在java中如何用一个更大的数组替换原数组中的内容,但是名字不变呢?代码如下:
int [] temp=new int [elements.length*2);
System.arraycopy(elements,0,temp,0,elements.length);
elements=temp;
//以下代码是求一字符串是否是另一字符串的子串?(自己写的,你应该能看懂)
import java.util.Scanner; public class SubString { public static void main(String []args){ System.out.println("Please enter two strings:"); Scanner input=new Scanner(System.in); String s1=input.nextLine(); //输入子串 String s2=input.nextLine(); //输入父串 boolean b1; b1=judge(s2,s1); if(b1) System.out.println("Yes"); else System.out.println("No"); s2.indexOf(s1); } public static boolean judge(String s2,String s1) { int l2 = s2.length(); int l1 = s1.length(); if (l1 > l2 || l1 <1) return false; char[] v2 = s2.toCharArray(); char[] v1 = s1.toCharArray(); int i,j; for(j=0;j<l1;j++) { //子串的长度 for (i = 0; i < l2; i++) //父串的长度 { if (v1[j] == v2[i]) { int k=j,t=i; if (v1[++k] == v2[++t]) ; if(k==l1-1 && t<l2) return true; else continue; } } } return false; } }