0.类和对象深入解释
在Java中,类(Class
)和对象(Object
) 是两个核心概念,它们共同构成了面向对象编程(OOP
)的基础。
类(Class)
-
定义:类是一个模板或蓝图,它描述了具有相同属性和行为的一组对象的共同特征。在Java中,类通过关键字
class
来定义。 -
组成:类通常由成员变量(也称为属性或字段)和方法(也称为函数或行为)组成。成员变量表示对象的状态,而方法则定义了对象的行为。
-
特性:类具有封装性,可以将数据和操作数据的方法结合在一起,形成一个不可分割的单位。此外,类还支持继承和多态等面向对象特性。
对象(Object)
-
定义:对象是类的实例化,是类的具体表示。每个对象都是类的一个实例,它拥有类定义的属性和方法。
-
创建:在Java中,对象是通过使用new关键字和类的构造函数来创建的。例如,MyClass obj = new MyClass();这行代码创建了一个MyClass类的对象obj。
-
状态和行为:对象的状态由它的成员变量(属性)表示,而对象的行为则由它的方法定义。通过调用对象的方法,可以改变对象的状态或执行某些操作。
-
唯一性:每个对象在内存中都有一个唯一的地址,这使得每个对象都是独一无二的。即使两个对象属于同一个类,它们的状态也可能不同。
关系:
- 类是对象的模板:类是创建对象的蓝图或原型。通过定义类,我们指定了对象将拥有的属性和方法。
- 对象是类的实例:对象是类的具体实现。当我们创建一个对象时,我们实际上是在创建一个类的实例,该实例将拥有类定义的属性和方法。
示例:
// 定义一个类
class Person {
// 成员变量(属性)
String name;
int age;
// 方法(行为)
void speak() {
System.out.println("Hello, my name is " + name + " and I am " + age + " years old.");
}
}
public class Main {
public static void main(String[] args) {
// 创建对象
Person person1 = new Person();
Person person2 = new Person();
// 设置对象的状态
person1.name = "Alice";
person1.age = 30;
person2.name = "Bob";
person2.age = 25;
// 调用对象的方法
person1.speak(); // 输出: Hello, my name is Alice and I am 30 years old.
person2.speak(); // 输出: Hello, my name is Bob and I am 25 years old.
}
}
在这个示例中,Person是一个类,它有两个属性(name和age)和一个方法(speak)。Main类中的main方法创建了两个Person类的对象(person1和person2),并设置了它们的状态,然后调用了它们的方法。
1.成员变量和局部变量的区别
局部变量:在方法中的变量
成员变量:类中方法外的变量
例:
public class student {
String name;//成员变量
public void learn {
int i = 0;//局部变量
System.out.println(i);
}
}
区别:
2. System.out.printf( )的使用
我们在前面经常使用System.out.println()
,自带换行,并且可进行字符串之间,字符串和变量的连接。
下面我们介绍剩下的两种:
System.out.print()
System.out.printf()
System.out.print()
不进行换行,其他功能和System.out.println()
一样System.out.printf()
用于对内容的格式化输出:
首先用//整型 int num = 100; System.out.printf("%d",num); //字符串 String name = "lshh"; System.out.printf("%s",name); //字符型 char ch = 'a'; System.out.prinf("%c",ch);
%s/d/f/c...
进行占位,在“”后用英文逗号隔开,跟上实际的变量
prinf
也支持多个变量,以及字符和变量混合//多个变量根据类型写上占位符,在后边用逗号跟上变量即可 System.out.printf("%d %s %c", a, b, c); //和字符一起 System.out.printf("在%s我的年龄是:%d", year, age); // 使用 %x 格式化整数为十六进制 int hexValue = 255; System.out.printf("The integer value in hexadecimal is: %x%n", hexValue); // 使用 %o 格式化整数为八进制 int octalValue = 255; System.out.printf("The integer value in octal is: %o%n", octalValue); // 使用 %e 格式化浮点数为科学计数法 System.out.printf("The double value in scientific notation is: %e%n", doubleValue); // 使用 %% 输出百分号字符 System.out.printf("This is a percent