- 对象:用来描述客观事物的一个实体,由一组属性和一组行为组成
- 类:具有相同属性和方法的一组对象的集合,类是对象的抽象,对象是类的具体
通过几个Demo来进一步详细解释一下类和对象的概念
定义一个Student类
public class Student {
//定义属性
String name;
char sex;
//定义方法,自我介绍
public void showInfo() {
System.out.println("接下来是我的自我介绍。");
System.out.println("我叫" + name + ",我是" + sex + "生。");
}
}
在主类中去创建对象
public static void main(String[] args) {
//通过定义好的类创建实体对象
Student stu1 = new Student();
System.out.println(stu1.name);
stu1.name = "阿文";
stu1.sex = '女';
stu1.showInfo();
}
方法的使用
组成:访问修饰符 [其他修饰符] 返回值类型(没有返回值用void) 方法名 ([参数列表]) {方法体}
注意事项:
- 方法不能嵌套定义
- 静态方法可以直接调用本类中的静态方法,不能调用本类中的普通方法。
- 普通方法可以直接调用本类中的普通方法和静态方法。
- 有返回值的方法,必须在方法体内使用return关键字返回对应数据类型的返回值,并且return只能是方法体的最后一行代码。
方法的形式:
// 公开的 空返回值 无参的方法
public void function1() {
System.out.println("这是一个方法");
}
// 有返回值 无参的方法
public int function2() {
System.out.println("这也是一个方法");
return 666;
}
// 有返回值 有参的方法
public double function3(double a, double b) {
return a + b;
}
// jdk1.5+ 方法的可变参
public double function4(double... nums) {
double sum = 0;
for (double num : nums) {
sum += num;
}
return sum;
}
重点: == 和 equals 的区别:
- 前者是运算符,后者是方法
- 前者可以用于比较基本数据类型,也可以比较用数据类型。基本数据类型比较的是值相等,引用数据类型比较的是地址相等。
- 后者只能用于比较引用数据类型,比较的是内容相等。如果引用数据类型没有重写equals方法,默认比较的还是地址,和前者一致。
例:
public static void main(String[] args) {
//基本数据类型
int a = 1;
int b = 1;
System.out.println(a == b);
//引用数据类型
String str1 = new String("hello");
String str2 = new String("hello");
System.out.println(str1 == str2);
System.out.println(str1.equals(str2));
}
类和对象以及== 和 equals的实例:
/**
* 用户注册、登录、修改密码
*/
先定义一个用户类
public class User {
public String realName;
public String username;
public String password;
}
在主方法中实现业务逻辑
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
User[] users = new User[5];
int index = 0;
while (true) {
System.out.println("请选择:1.注册 2.登录 3.修改密码");
int choose = sc.nextInt();
switch (choose) {
case 1:
User user = new User();
System.out.println("请输入真实姓名:");
user.realName = sc.next();
System.out.println("请输入用户名:");
user.username = sc.next();
System.out.println("请输入密码:");
user.password = sc.next();
users[index] = user;
index++;
System.out.println("注册成功!");
break;
case 2:
System.out.println("请输入用户名:");
String username = sc.next();
System.out.println("请输入密码:");
String password = sc.next();
boolean flag = true;
for (User u : users) {
if (u != null && u.username.equals(username) && u.password.equals(password)) {
System.out.println("登录成功!");
flag = false;
}
}
if (flag) {
System.out.println("用户名或者密码错误!");
}
break;
case 3:
System.out.println("请输入用户名:");
String username1 = sc.next();
System.out.println("请输入密码:");
String password1 = sc.next();
boolean flag1 = true;
for (User u : users) {
if (u != null && u.username.equals(username1) && u.password.equals(password1)) {
flag1 = false;
System.out.println("请输入新密码:");
u.password = sc.next();
System.out.println("修改成功!");
}
}
if (flag1) {
System.out.println("用户名或者密码错误!");
}
break;
default:
System.out.println("输入错误!重新选择!");
break;
}
}
//sc.close();
}
总结:
java中最基本也是最重要的概念