由一段程序引发关于对象的思考

本文介绍了Java中类的设计原则,包括封装、继承等概念,并通过一个学生类的例子进行说明。此外,还提供了如何判断一个字符串是否为另一个字符串的子串的实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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中的dateid

如果一个局部变量和一个类变量具有相同的名字,那么局部变量优先,而同名的类变量将被隐藏;

//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;
    }
}

 

  

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值