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


    }
}

 

posted @   一只神秘的猫  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示