一篇文章带你了解JAVA面对对象应用

目录
  • 常用API
    • String类
      • 关于String为啥不可改变
    • StringBuilder类
      • String、StringBuffer 和 StringBuilder 的区别:
  • ArrayList
    • 1.1ArrayList类概述
    • 1.2ArrayList类常用方法
  • 学生管理系统
  • 总结

常用API

API理解

  • 什么是API

API (Application Programming Interface) :应用程序编程接口

  • java中的API

指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。

如何使用API帮助文档

主要是以下几步:  

1. 打开帮助文档
  2. 找到选项卡中的索引框
  3. 在输入框中输入你要查找类,例如Random
  4. 看类在哪个包下
  5. 看类的描述
  6. 看构造方法
  7. 看成员方法

接下来讲解String类,StringBuilder类

String类

一. 基本内容:  

String 类代表字符串,Java 程序中的所有字符串文字(例如“abc”)都被实现为此类的实例。也就是说,Java 程序中所有的双引号字符串,都是 String 类的对象。String 类在 java.lang 包下,所以使用的时候不需要导包!

二. 特点:

  • 字符串不可变,它们的值在创建后不能被更改
  • 虽然 String 的值是不可变的,但是它们可以被共享
  • 字符串效果上相当于字符数组( char[] ),但是底层原理是字节数组( byte[] )

关于String为啥不可改变

这里可以根据 jdk 的源码来分析。

字符串实际上就是一个 char 数组,并且内部就是封装了一个 char 数组。

并且这里 char 数组是被 final 修饰的:

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {
    /** The value is used for character storage. */
    private final char value[];

  并且 String 中的所有的方法,都是对于 char 数组的改变,只要是对它的改变,方法内部都是返回一个新的 String 实例。

三. 构造方法

常用:

代码展示:

/*
登录系统
*/
public class UserLogin {
	public static void main(String [] args) {
		String username = "hxf1688";
		String password = "2e5y8hxf";
		for(int i=0; i < 3; i++) {
			Scanner sc = new Scanner(System.in);      //创建sc为输入类
			System.out.println("请输入用户名:");
			String user = sc.nextLine();
			System.out.println("请输入密码:");
			String psw = sc.nextLine();
			if(username.equals(user)&&password.equals(psw)) {
				System.out.println("登录成功");
				break;
			}
			else {
				if(i==2) {
					System.out.println("您输入错误次数过多,请联系管理员");
				}
				else {
					System.out.println("输入失败,您还有"+(2-i)+"尝试机会");
				}
			}
		}
	}
}

StringBuilder类

一、基本内容:  

StringBuilder 是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是 StringBuilder 对象中的内容是可变的

二、构造方法:

常用:

代码展示:

StringBuilder s1 = StringBuilder(hello);
s2 = s1.append("world");
(s1 == s2)    //

结果为true

StringBuilder类的其他知识点:

拓展知识

String、StringBuffer 和 StringBuilder 的区别:

String:字符串常量,字符串长度不可变。Java中String 是immutable(不可变)的。用于存放字符的数组被声明为final的,因此只能赋值一次,不可再更改。

StringBuffer:字符串变量(Synchronized,即线程安全)。如果要频繁对字符串内容进行修改,出于效率考虑最好使用

StringBuffer,如果想转成 String 类型,可以调用 StringBuffer 的 toString() 方法。Java.lang.StringBuffer 线程安全的可变字符序列。在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。可将字符串缓冲区安全地用于多个线程。

StringBuilder:字符串变量(非线程安全)。在内部 StringBuilder 对象被当作是一个包含字符序列的变长数组。

基本原则 :

  • 如果要操作少量的数据用 String ;
  • 单线程操作大量数据用StringBuilder ;
  • 多线程操作大量数据,用StringBuffer。

ArrayList

1.1ArrayList类概述

  • 什么是集合

提供一种存储空间可变的存储模型,存储的数据容量可以发生改变

  • ArrayList集合的特点

底层是数组实现的,长度可以变化

  • 泛型的使用

用于约束集合中存储元素的数据类型

1.2ArrayList类常用方法

构造方法 :

public ArrayList() : 创建一个空的集合对象

成员方法 :

关于成员方法的具体操作 :

代码展示:

import java.util.ArrayList;
public class Arraylist1 {
    public static void main(String[] args) {
        ArrayList<String> al =new ArrayList<>();
        al.add("ding");
        al.add("yu");
        al.add("meng");             //增加元素
        al.add(3,"wo"); //增加指定索引元素
        System.out.println(al.remove("wo")); // 删除元素
        System.out.println(al.remove(2));//  删除指定索引元素
        System.out.println(al.set(1,"sun"));//  修改指定索引元素
        System.out.println(al.get(0)); // 返回指定索引处的元素
        System.out.println(al.get(1));
        System.out.println(al.size()); //集合长度
        System.out.println(al);
    }
}

学生管理系统

案例需求 :

  • 针对目前我们的所学内容,完成一个综合案例:学生管理系统!该系统主要功能如下:
  • 添加学生:通过键盘录入学生信息,添加到集合中
  • 删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除
  • 修改学生:通过键盘录入要修改学生的学号,将该学生对象其他信息进行修改
  • 查看学生:将集合中的学生对象信息进行展示
  • 退出系统:结束程序

具体界面 :

实现步骤 :

1.定义学生类,包含以下成员变量 :​

private String sid // 学生id​

private String name // 学生姓名​

private String age // 学生年龄​

private String address // 学生所在地

2.学生管理系统主界面的搭建步骤 :

首先用输出语句完成主界面编写, 接着Scanner键盘输入, 然后switch语句完成选择的功能, 最后循环完成功能结束后回到主界面

具体代码:

import java.util.ArrayList;
import java.util.Scanner;
public class Studenttext {
    public static void main(String[] args) {
        boolean isFlag=true;
        ArrayList<Student> s = new ArrayList<>();
        while (isFlag) {
            System.out.println("------欢迎来到远远学生管理软件------\n");
            System.out.println("      1  添加学生");
            System.out.println("      2  删除学生");
            System.out.println("      3  修改学生");
            System.out.println("      4  查看所有学生");
            System.out.println("      5  退出");
            System.out.println("      请输入你的选择: ");
            char selection = Student.readMenuSelection();
            switch (selection){
                case '1':
                    addStudent(s);
                    break;
                case '2':
                    removeStudent(s);
                    break;
                case '3':
                    setStudent(s);
                    break;
                case '4':
                    findStudent(s);
                    break;
                case '5':
                    System.out.print("确认是否退出(Y/N):");
                    char isExit = Student.readConfirmSelection();
                    if (isExit == 'Y') {
                        isFlag = false;
                        break;
                    }
            }
        }
    }

3.学生管理系统的添加学生功能实现步骤 :

定义一个方法,接收ArrayList集合 ,方法内完成添加学生的功能 : 最后调用添加学生方法​

a.键盘录入学生信息​

b.根据录入的信息创建学生对象​

c.将学生对象添加到集合中​

d.提示添加成功信息

4.学生管理系统的查看学生功能实现步骤 :

定义一个方法,接收ArrayList集合, 方法内遍历集合,将学生信息进行输出, 在查看所有学生选项里调用查看学生方法

具体代码:

    public static void findStudent(ArrayList<Student> s) {
        if (s.size()==0){
            System.out.println("无数据,请先录入学生信息");
            return;
        }
        System.out.println("学号\t\t姓名\t\t年龄\t\t居住地");
        for (int i = 0; i < s.size() ; i++) {
            Student a=s.get(i);
            System.out.println(a.getSid()+"\t\t"+a.getName()+"\t\t"+a.getAge()+"岁\t"+a.getAddress());
        }
}

学生管理系统的删除学生功能实现步骤 :

定义一个方法,接收ArrayList集合, 方法中接收要删除学生的学号, 遍历集合,获取每个学生对象, 使用学生对象的学号和录入的要删除的学号进行比较,如果相同,则将当前学生对象从集合中删除,最后在删除学生选项里调用删除学生的方法

学生管理系统的修改学生功能实现步骤 :

定义一个方法,接收ArrayList集合, 方法中接收要修改学生的学号, 通过键盘录入学生对象所需的信息,并创建对象, 遍历集合,获取每一个学生对象。并和录入的修改学生学号进行比较.如果相同,则使用新学生对象替换当前学生对象, 在修改学生选项里调用修改学生的方法

具体代码:

 public static void setStudent(ArrayList<Student> s) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你要修改的学生学号:");
        String sid = sc.nextLine();
        int index = -1;
        for (int i = 0; i < s.size(); i++) {
            Student b = s.get(i);
            if (b.getSid().equals(sid)) {
                index = i;
                break;
            }
        }
        if (index == -1) {
            System.out.println("你输入的学号不存在,请重新输入");
        } else {
            System.out.println("请输入学生新姓名");
            String name = sc.nextLine();
            System.out.println("请输入学生新年龄");
            String age = sc.nextLine();
            System.out.println("请输入学生新居住的");
            String address = sc.nextLine();
            Student a = new Student();
            a.setSid(sid);
            a.setName(name);
            a.setAge(age);
            a.setAddress(address);
            for (int i = 0; i < s.size(); i++) {
                Student b = s.get(i);
                if (b.getSid().equals(sid)) {
                    s.set(i, a);
                    break;
                }
            }
            System.out.println("修改成功");
        }
    }

退出系统

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • 对Java的面对对象编程中对象和引用以及内部类的理解

    最近利用下班的时候看了看的think in java感觉再看 和第一次看大不一样 接下来说一下java中对象和引用的关系,以及内部类的概念. 1.java中一切都是对象  在java中是什么来操作者对象呢?答案是引用,这就好比C或者C++中的指针. 如果用拥有一个引用,那么此时你必须让其和一个对象关联在一起,否则这个引用并不会像你想象的那样任由你的控制,例如你创建了一个String的引用: String s ; 而此时并未与任何对象关联,如果此时你去做一些操作,如调用String的一些方法,肯定

  • Java实现普通类注入service对象

    普通类注入service对象 找了很多办法,无论是加@Component还是编写工具类实现ApplicationContextAware,始终为null. 最后使用这两行代码解决: WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext(); DailySurveyService service = (DailySurveyService) context.getBean("dailySurvey

  • 新手初学Java对象内存构成

    目录 Java对象内存构成 对象内存构成 对象头 Mark Word Klass Pointer# 实例数据 对齐数据 Talk is cheap, show me code 普通对象# 数组对象 总结 Java对象内存构成 今天来讲些抽象的东西 -- 对象头,因为我在学习的过程中发现很多地方都关联到了对象头的知识点,例如JDK中的 synchronized锁优化 和 JVM 中对象年龄升级等等.要深入理解这些知识的原理,了解对象头的概念很有必要,而且可以为后面分享 synchronized 原

  • 浅谈java 面对对象(抽象 继承 接口 多态)

    什么是继承? 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可. 多个类可以称为子类,单独这个类称为父类.超类或者基类. 子类可以直接访问父类中的非私有的属性和行为. 通过 extends 关键字让类与类之间产生继承关系. class SubDemo extends Demo{} //SubDemo是子类,Demo是父类 继承有什么好处? •提高代码的复用性. •让类与类之间产生了关系,是多态的前提. 继承的特点 1.Java只支

  • 详细理解JAVA面向对象的封装,继承,多态,抽象

    目录 类和对象的使用(面向对象思想落地的实现): 子类对象实例化的全过程 1.从结果上看:(继承性) 2.从过程上来看: 1.封装性 2.继承性 继承性的好处: 3.多态性 虚拟方法调用 4.抽象性 1.抽象类的特点: 2.天生的父类:抽象类 3.抽象方法 总结 创建类的对象 = 类的实例化 = 实例化类 类和对象的使用(面向对象思想落地的实现): 1.创建类,设计类的成员 2.创建类的对象 3.通过"对象.属性"或"对象.方法"调用对象的结构 如果创建了一个类的多

  • 一篇文章带你了解JAVA面对对象三大特征之封装

    目录 面对对象的三大特征: 封装.继承.多态 封装 继承 多态 类和对象 关于类 关于对象 三大特征第一封装 关于封装思想 : private关键字 this关键字 构造方法 构造方法注意事项 总结 面对对象的三大特征: 封装.继承.多态 封装 封装是把客观事物抽象成类,并且把自己的属性和方法让可信的类或对象操作,对不可性的隐藏. 继承 继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展. 1. 继承得到的新类称为"子类"或"

  • 一篇文章带你了解JAVA面对对象之继承与修饰符

    目录 Java面向对象之继承与修饰符 继承 1.含义 2.实现 3.好处 4.短处 5.成员变量的访问特点 7.继承中结构方法的访问特点 8.方法重写 9.java继承的注意事项 修饰符 1.package 2.import 3.权限修饰符 4.final 5.ianl修饰基本数据类型变量 6.final修饰引用数据类型变量 7.static 8.static访问的特点 总结 Java面向对象之继承与修饰符 继承 1.含义 继承是面向对象三大特征之一,能使子类具有父类的属性和方法,还可以在子类中

  • 一篇文章带你了解JAVA面对对象应用

    目录 常用API String类 关于String为啥不可改变 StringBuilder类 String.StringBuffer 和 StringBuilder 的区别: ArrayList 1.1ArrayList类概述 1.2ArrayList类常用方法 学生管理系统 总结 常用API API理解 什么是API API (Application Programming Interface) :应用程序编程接口 java中的API 指的就是 JDK 中提供的各种功能的 Java类,这些类将

  • 一篇文章带你了解Java Spring基础与IOC

    目录 About Spring About IOC Hello Spring Hello.java Beans.xml Test.java IOC创建对象的几种方式 Spring import settings Dependency Injection 1.构造器注入 2.set注入 3.拓展注入 P-namespcae&C-namespace Bean scopes singleton prototype Bean的自动装配 byName autowire byType autowire 小结

  • 一篇文章带你了解Java中ThreadPool线程池

    目录 ThreadPool 线程池的优势 线程池的特点 1 线程池的方法 (1) newFixedThreadPool (2) newSingleThreadExecutor (3) newScheduledThreadPool (4) newCachedThreadPool 2 线程池底层原理 3 线程池策略及分析 拒绝策略 如何设置maximumPoolSize大小 ThreadPool 线程池的优势 线程池做的工作主要是控制运行的线程数量,处理过程中将任务放入队列,然后在线程创建后启动这些

  • 一篇文章带你复习java知识点

    JDK JRE JVM JDK: Java标准开发包,它提供了编译.运⾏Java程序所需的各种⼯具和资源,包括Java编译器.Java运⾏时环境,以及常⽤的Java类库等. JRE: Java运⾏环境,⽤于解释执⾏Java的字节码⽂件. JVM Java虚拟机,是JRE的⼀部分.负责解释执⾏字节码⽂件,是可运⾏java字节码⽂件的虚拟计算机 区别联系:(问答题会考可能) JDK包含JRE,JDK 和 JRE 中都包含 JVM.JDK出了包含jre还包含⼀些常⽤开发⼯具和基础类库 JDK ⽤于开发

  • 一篇文章带你入门java面向对象

    目录 一.继承 示例: 二.重载 三.接口 1.接口与类相似点: 2.接口与类的区别: 3.语法 四.枚举 1.定义 2.迭代枚举元素 3.在 switch 中使用枚举类 总结 一.继承 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为 本章就以人.学生.老师作为例子.学生和老师都继承人这个对象,都有人的特征和行为,人就是父类,老师和学生就是子类 示例: 人类: package com.zhouzy.base.t7;

  • 一篇文章带你入门Java修饰符

    目录 定义 分类 访问控制修饰符 非访问控制修饰符 修饰符的使用说明 修饰类 修饰方法 访问控制修饰符 非访问控制修饰符 修饰变量 总结 定义 Java修饰符:修饰符用来定义类.方法或者变量,通常放在语句的最前端. 分类 主要分为2类: 访问控制修饰符 非访问控制修饰符 访问控制修饰符 可以使用访问控制符来保护对类.变量.方法和构造方法的访问.分为以下4中权限:private,default,protected,public. 权限说明: 修饰符 当前类 同包 子类(不同包) 不同包(其他类)

  • 一篇文章带你了解Java之关键字和保留字

    目录 引言 概念 关键字分类 1.访问控制 2.类.方法和变量修饰符 3.程序控制语句 4.错误处理 5包相关 6.基本类型 7.变量引用 8.保留关键字 9.其他(个人认为不是关键字.也不是保留字,但是,如果尝试将它们用作Java中的标识符,仍然会生成编译时错误.) 总结 引言 ♀ 小AD:小明哥,前几天边学Java边学连招,我感觉上分如喝水,我这连招很熟练哦. ♂ 明世隐:跟明哥混,舒服吧! ♀ 小AD:舒服啊,回头请你喝奶茶! ♂ 明世隐:乖,懂事! ♀ 小AD:那今天整点啥? ♂ 明世隐

  • 一篇文章带你入门Java字面量和常量

    目录 引言 概念 字面量 字面量的分类 常量 总结 引言 ♀ 小AD:哥,前两天我没有闪现到刺客脸上了吧 ♂ 明世隐:在这方面做的有进步. ♀ 小AD:明哥教的好,通过学习Java关键字,游戏水平也得到了提升,一举两得,舒服. ♂ 明世隐:可是你看到残血还是上头啊,是了多少次,你说? ♀ 小AD:5.6次吧 ♂ 明世隐:岂止5.6,起码10次. ♀ 小AD:这不是看到200金币,经不住诱惑吗 ♂ 明世隐:关爱残血,你学哪里去了,游戏中就不能多一些人间的关爱吗?你就不能关爱一下放暑假的小弟弟小妹妹

随机推荐