Java中定义数组时,可以在数组名前或后加上中括号[]。但是在定义时不能指定数组的大小。
整除和求余操作可以通过%和/运算符来实现。字符串的创建有多种方式,可以创建空字符串、直接赋值创建字符串、使用原有的String对象创建字符串、或使用数组创建字符串。
字符串连接可以通过contact()方法或“+”运算符来实现。使用“+”运算符时,其他类型的数据会自动转换为字符串。字符串长度可以通过length()方法来获取。
替换字符串可以使用replace()方法或replaceAll()方法。replace()方法将指定字符替换为新字符,而replaceAll()方法可以使用正则表达式来匹配需要替换的字符串。
查找字符串可以使用indexOf()方法,该方法可以查找指定字符串在原字符串中的位置。
dexOf(String str)方法可以查找一个字符串在另一个字符串中最后出现的位置。例如,对于字符串str1="this is a
string",调用indexOf("is")方法返回结果为2,而调用lastIndexOf("is")方法返回结果为5.
2.截取子串可以使用substring方法,该方法有两种重载形式:一种是从指定位置开始截取到字符串末尾,另一种是从指定位置开始截取到另一个指定位置。例如,对于字符串str1="this is a string",调用substring(0,4)方法返回结果为"this",而调用substring(10)方法返回结果为"string"。
3.三元表达式的用法是:表达式A?表达式B:表达式C。当表达式A的值为真时,整个表达式的值为表达式B的值;反之,则为表达式C的值。
4.在Java中,运算符有不同的优先级,可以使用括号来改变运算的优先级。
5.注释有三种形式:单行注释、多行注释和文档注释。单行注释以"//"开头,多行注释以"/*"开头,文档注释以"/**"开头。它们分别用于注释单行、多行和整个类或方法的功能和用法。
6.构造方法是一种特殊的方法,用于初始化对象的数据。它可以带参数或不带参数。子类可以调用父类的构造方法来初
始化父类的数据。例如,在类Circle中定义了一个带参数的构造方法Circle(double r),可以使用该构造方法来创建一个半径为5的圆:myCircle=new Circle(5.0)。如果没有定义构造方法,则系统会默认提供一个无参构造方法。
在定义一个类时,如果已经定义了带参数的构造方法,使用无参构造方法建立对象就会出错。类的构造方法遵循以下规定:与类同名、没有返回类型、可以有多个构造方法,但参数不同、如果没有构造方法,则会自动生成一个默认的无参数构造方法并使用默认值初始化对象属性、可以通过关键字this调用另一个构造方法、只能由new操作符调用。
成员的访问控制包括实例变量、类变量和类常量。实例变量是没有使用static修饰符的数据成员,不能被同一个类里的不同变量共享,必须实例化。类变量使用static修饰符的数据成员,可以让一个类的所有实例共享数据,也称为静态变量。类常量是一个数据成员在声明时加上关键字final,它的值就不能再被改变,如果static和final同时使用,就是类常量。需要注意的是,类变量的值存储在类的公用内存,如果某个对象修改了类变量的值,同一类的所有对象都会受到影响。对于整个类来说,类变量的值只存一份,且一定是静态变量。
全局变量包括实例变量和类变量,局部变量在方法内部说明。全局变量的作用域是所有实例方法,局部变量的作用域从它的说明开始延续到包含它的块尾。全局变量不赋值有默认初值,但局部变量没有默认初值,使用时必须赋初值。全局变量只能声明一次,但在一个方法互不嵌套的块内,可以多次声明同一个局部变量。当局部变量与全局变量同名时,局部变量优先,同名的全局变量被隐藏。
实例方法是没有使用static修饰符的方法,必须通过对象来调用,不能通过类名调用。类方法在定义的时候加上static修饰符,可以通过类名调用,也可以通过对象调用。类方法只能操作类变量,而实例方法既可以操作实例变量也可以操作类变量。在构造方法中可以使用this调用其他构造方法,例如,圆的默认构造方法中使用this调用有参的构造方法。
静态方法可以调用非静态方法,但非静态方法不能调用静态方法。
修饰符混用:
abstract不能与final并列修饰同一个类。
abstract类中不可以有private的成员。
抽象方法必须在抽象类中。
静态方法中可以处理非静态的属性。
抽象方法、抽象类:
抽象类是用abstract关键字来修饰的类,它可以包含抽象方法,也可以不包含抽象方法。但包含抽象方法的类必须定义成抽象类。抽象类不能被实例化,但可以被继承,不能被定义成final类。继承抽象类的类必须实现抽象类的抽象方法,否则也必须定义成抽象类。如果一个类实现某个接口,但没有实现该接口的所有方法,那么这个类必须定义成抽象类。
抽象方法是用abstract关键字来修饰的方法,它只有声明,没有实现。
方法的覆盖:
子类中的某个方法与父类的某个方法的名称、参数和返回值类型一样。在覆盖的情况下,子类将使用自己的方法。需要注意以下几点:
覆盖方法的说明必须和父类方法的说明相同,但返回类型可以按照某种特定的方式变化。
覆盖方法有自己的访问修饰符,但只限于提供同样或更多的访问权限。
覆盖方法的throws子句可以和父类方法有所不同,但每一个异常类型都应该和超类中的异常类型相同,或者是父类异常类型的子类型。
不能用子类的静态方法覆盖父类中的实例方法。
带关键字final的方法不能被覆盖。
抽象方法必须在子类中被覆盖,否则子类也必须是抽象的。
接口的继承的特点:
接口可以多继承,例如:
interface e {
String CHINESE_MSG = "你好,欢迎你!"。//定义常量
void sayChinese();
但是可以通过公有的getter和setter方法来访问。
接口是一个规范,定义了一组方法和常量,但是没有具体的实现。一个类可以实现多个接口,实现了接口的类必须实现接口中定义的所有方法。接口中的常量都是public static final类型,方法都是public abstract类型。与抽象类相比,接口不能包含变量和具体的方法,可以包含常量。
子类可以通过继承来获取父类中的变量和方法。在Java中,类只支持单一继承,不支持多重继承。继承是可传递的,子类可以扩展它的直接基类,但不能移除父类中定义的成员。除构造方法外,其他非私有成员都可以被继承。私有数据成员虽然不能被继承,但是可以通过公有的getter和setter方法来访问。
抽象类和接口的区别在于,抽象类可以提供某些方法的实现,而接口的方法都是抽象的。抽象类可以包含变量,而接口中不能包含变量,只能包含常量。抽象类中的成员可以有多种权限,而接口中的成员只能是public。如果抽象类增加一个具体的方法,则子类都具有此具体方法,而接口中增加一个方法,则子类必须实现此方法。一个类最多能继承一个抽象类,而接
口可以继承多个接口,一个类也可以实现多个接口。抽象类和它的子类之间应该是一般和特殊的关系,而接口仅仅是它的子类应该实现的一组规则,无关的类也可以实现同一接口。
在派生类中,可以通过公有方法间接访问父类的成员。此外,派生类也可以通过声明具有相同说明的新成员来隐藏被继承的成员。但是,被隐藏的成员并没有被移除,只是在派生类中不可直接访问。
子类可以继承父类中用public修饰的公有成员,并且可以在子类内部直接使用,外界也可以通过子类使用。但是,如果父类中的成员被private修饰,子类就无法继承和直接使用,只能通过父类提供的公有方法间接使用。当父类的成员被protected修饰时,子类可以继承并直接使用,但是外界只能在同一包类中使用。
多态性是指不同类的对象对同一消息作出不同的响应。子类可以调用父类相同名字的变量和方法,使用关键字super来调用父类的构造方法和方法。当子类中的方法与父类的方法说明一样时,子类会使用自己的方法,如果还想使用父类的方法,就需要使用super。
在创建对象时,使用String s1="bc";String s2="bc";只会创建一个对象,而使用String s1="bc";String s2=new String("bc");则会创建两个对象。
方法的返回类型和定义要根据实际需求来确定。final修饰的量是常量,在程序的运行过程中不会改变。final修饰的类是最终类,不需要进行扩展。abstract和final修饰符不能同时使用。
静态变量可以通过类名直接访问,而非静态变量必须实例化后才能访问。在编写程序时,需要注意类、抽象类、接口的定义及使用,类的继承以及多态性的应用。
下面是改写后的文章:
本文介绍了类的继承、接口的定义和使用,并提供了一个例题:编写一个学生类,包括姓名、学号、性别、年龄等属性,并实现获得这些属性的方法和一个toString方法。
例题:学生类的实现
为了实现学生类,我们需要定义一个包含姓名、学号、性别和年龄等属性的类。我们可以使用以下代码:
package exam;
public class Student {
int id;
int age;
String name;
boolean sex;
无参构造函数
public Student() {
super();
有参构造函数
public Student(int id。int age。String name。boolean sex) {
super();
= id;
= age;
= name;
= sex;
public int getId() {
return id;
public int getAge() {
return age;
public String getName() {
return name;
public boolean isSex() {
return sex;
public String toString() {
return("姓名:" + getName() + " 学号:" + getId() + " 年龄:" + getAge() + " 性别:" + isSex());
在这个类中,我们定义了一个无参构造函数和一个有参构造函数。无参构造函数用于创建一个空的学生对象,而有参构造函数用于创建一个具有特定属性的学生对象。我们还定义了一些方法,例如getId()、getAge()、getName()和isSex(),用于获取学生对象的属性。
最后,我们还定义了一个toString()方法,用于将学生对象转换成字符串形式。在这个方法中,我们使用了getName()、getId()、getAge()和isSex()方法来获取学生对象的属性,并将它们组合成一个字符串返回。
发表评论