java封装
JAVA(封装,equal,==)
构造器:
- 构造器在创建对象时执行初始化,创建一个对象时,会进行初始化
- 构造器的格式: 权限修饰符 类名(无参/有参){}
- 根据有无参数,可分为无参构造 和有参构造
- 不能被static、final、synchronized、abstract和native修饰,构造方法不能被子类继承
- 倘若类中已存在有参构造函数,则编译器不再提供默认无参构造。实例化对象时需赋值,不然报错
- ava编译器会自动创建无参构造函数,因此在类中,无参构造即使没有,也可省略不写。实例化对象时无需赋值
构造器举例:
public class Dog {
private String color;
private int age;
public Dog(){}
public Dog(String color,int age){
this.color=color;
// if(age>=0)
this.age=age;
}//构造器
}
封装:属性私有化
属性都要使用private封装
提供一个公有的get,set方法,set赋值,get取值
正确定义一个类:
- 所有属性私有化
- 对应属性都有对应get,set方法
类调用:
在类的调用时,People p=new People();,对象名入栈存地址,new People();在堆里开辟一块空间
this关键字:
- this可以调用成员变量
- this可以调用成员方法
- this可以调用构造函数
- 这种调用方式,只存在于构造函数和构造函数之间
- 必须放在方法体的第一行
- 不可以两个构造函数互相调用,否则出现死循环现象
equals()与==的比较
理解 equals() 方法和 == 运算符执行的是两个不同的操作是重要的。equals() 方法比较字符串对象中的字符。而 == 运算符比较两个对象引用看它们是否引用相同的实例。
equals是超类Object的方法,也是比较的地址,和 == 差不多,如果想要比值,需要重写equals方法,比如包装器类型
String s1 = "Hello";
String s2 = new String(s1);
System.out.println(s1.equals(s2)); // 输出true
System.out.println(s1 == s2); // 输出false
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public class User_01 { private String name; private String pass; public User_01(String name, String pass) { this .name = name; this .pass = pass; } public static void main(String[] args) { User_01 user_01 = new User_01( "a" , "123" ); User_01 user_02 = new User_01( "a" , "123" ); System.out.println(user_01.equals(user_02)); // fslse System.out.println(user_01 == user_02); // false } } |
案例:
USER类
package mxduixiang.fengzhuang2;
public class User {
private String username;
private String pass;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}
Demo类
package mxduixiang.fengzhuang2;
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
User[] users=new User[10];
users[0]=new User();
users[0].setUsername("123");
users[0].setPass("123");
int index=1;
Scanner sc=new Scanner(System.in);
tdemo:while(true){
System.out.println();
System.out.println("-----------------");
System.out.println("请选择功能1注册,2登录,3查询全体,4姓名查询,5删除,6修改,10全部删除,0退出");
System.out.println("-----------------");
String flag=sc.next();
switch (flag){
case "1"://注册,用户名不能重复,
System.out.println("请输入账号");
String username=sc.next();
boolean u=false;
uu:for (int i = 0; i < index; i++) {
if(users[i].getUsername().equals(username)){
u=true;
break uu;
}
}
if(u==true){
System.out.println("用户名存在");
}else {
System.out.println("请输入密码");
String pass=sc.next();
User user=new User();
user.setUsername(username);
user.setPass(pass);
users[index]=user;
index++;
System.out.println("注册成功");
}
//对象数组扩容
if(index==users.length){
User[] users1=new User[users.length*2];
for (int i = 0; i < index; i++) {
users1[i]=users[i];
}
users=users1;
}
break;
case "2"://登录
System.out.println("请输入用户名");
String uname=sc.next();
System.out.println("请输入密码");
String upass=sc.next();
boolean onc=false;
for (User user1 : users) {
if(user1!=null){
if(user1.getUsername().equals(uname)&&user1.getPass().equals(upass)){
onc=true;
}
}
}
if(onc==true){
System.out.println("登录成功");
}else{
System.out.println("用户名或密码错误");
break;
}
break;
case "5"://删除
System.out.println("输入要删除的用户名");
String delname=sc.next();
boolean dels=false;
int deln=0;
dell:for (int i = 0; i < index; i++) {
if(users[i].getUsername().equals(delname)){
dels=true;
deln=i;
break dell;
}
}
if(dels==true){
for (int i = deln+1; i < index; i++) {
users[i-1]=users[i];
}
users[index-1]=null;
index--;
System.out.println("删除成功");
}else{
System.out.println("用户名不存在");
}
break;
case "3"://查询全体
System.out.println("-----------------");
System.out.println("用户名 密码");
System.out.println("-----------------");
for (int i = 0; i < index; i++) {
System.out.println(users[i].getUsername()+" "+users[i].getPass());
}
break;
case "4"://查询姓名
System.out.println("请输入查询的姓名");
String chaname=sc.next();
boolean xunname=false;int xxname=0;
cxname:for (int i = 0; i < index; i++) {
if(users[i].getUsername().equals(chaname)){
xunname=true;
xxname=i;
break cxname;
}
}
if(xunname==true){
System.out.println("存在用户"+users[xxname].getUsername());
}else {
System.out.println("查无此人");
}
break;
case "6"://修改
System.out.println("请输入要修改的用户");
String change=sc.next();
boolean chan=false;
int c=0;
xiu:for (int i = 0; i < index; i++) {
if(users[i].getUsername().equals(change)){
chan=true;
c=i;
break xiu;
}
}
if(chan==true){
System.out.println("请输入修改的用户名");
String cname=sc.next();
System.out.println("请输入修改的密码");
String cpass=sc.next();
users[c].setUsername(cname);
users[c].setPass(cpass);
System.out.println("修改成功");
}else {
System.out.println("没有该用户");
}
break ;
case "10"://全部删除
System.out.println("确认全部删除? 1 确认 0 取消");
String sdel=sc.next();
switch (sdel){
case "1":
for (int i = index-1; i >=0 ; i--) {
users[i]=null;
index--;
}
System.out.println("全部删除 "+"剩余"+index);
break;
case "0":
System.out.println("已取消");
break;
default:
System.out.println("输入错误,以取消");break;
}
break;
case "0"://退出
break tdemo;
default:
System.out.println("输入错误");break;
}
}
}
}