Java互联网架构软件工程师——第一阶段
Day11–API 1
前言
今天就开始就要学习 API了,另外我们写代码还可以用IDEA来书写,安装教程等到后面找个时间来说吧
提示:以下是本篇文章正文内容,下面案例可供参考
一、Object
1.1 概述
类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。
1.2 常用方法
boolean equals(Object obj)
指示其他某个对象是否与此对象“相等”。
protected void finalize()
当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
int hashCode()
返回该对象的哈希码值。
String toString()
返回该对象的字符串表示。
1.3 入门案例
代码如下(示例):
// 测试 重写 Object 里的方法
//总结
//重写 toString():默认使用了父类的,打印的就是地址值,想要展示属性值
//重写 equals():默认使用父类的,就是 == 比较地址值,想比较属性
// IDEA自动生成 ---右键--Generate(alt+insert).....
// Eclispe自动生成 ---右键--Source--generate.....
public class Test02 {
public static void main(String[] args) {
//创建Student对象
Student s = new Student("琳琳",201721400);
// toString
String s1 = s.toString();
System.out.println(s1);
//equals():比较两个对象是否相等,相等返回 true 不等 返回 flase
Student x = new Student("蔡徐坤",20172);
Student y = new Student("蔡徐坤",20172);
boolean s2 =x.equals(y);
// 用了 父类 Object 提供的 默认使用了 == 比较
// == 比较基本类型的值本身
// == 比较引用类型的地址值
// 现在,不用地址值比较,想用属性是比较
System.out.println(s2);//flase
}
}
class Student{
//TODO Constructors..
public Student(){}
public Student(String name, int id) {
this.name = name;
this.id = id;
}
private String name ;
private int id ;
//TODO get()/set()---右键--Generate(alt+insert)--getter and setter
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
// 重写 toString(),不想展示 地址值, 想展示...
// generate --toString()
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", id=" + id +
'}';
}
// 重写 equals()---默认的是比较地址值,想比较属性值
//自动生成---右键 generate ---equals()and hashCode()
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
//把参数 obj 转型,转成 Student 类型
Student student = (Student) o;
//拿着属性比较,如果属性都一样,那就让equals()返回true
return id == student.id &&
Objects.equals(name, student.name);
}
@Override
public int hashCode() {
return Objects.hash(name, id);
}
}
二、String
2.1 概述
String 类代表字符串
Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。
字符串是常量;它们的值在创建之后不能更改。
2.2 特点
源码摘抄:
public final class String 不能被继承
private final char value[];
String本质上维护了一个char[] 叫value,用来存储多个字符数据.而且String是一个常量,值不能被修改
2.3 常用方法
这里就拿几个常用的来展示,更多的用法去 JDK API手册上查找
charAt(int index)
返回指定索引处的 char 值。
concat(String str)
将指定字符串连接到此字符串的结尾。
contains(CharSequence s)
当且仅当此字符串包含指定的 char 值序列时,返回 true。
endsWith(String suffix)
测试此字符串是否以指定的后缀结束。
equals(Object anObject)
将此字符串与指定的对象比较。
代码如下(示例):
// 测试 字符串
public class Test03 {
public static void main(String[] args) {
// 创建 String 对象
//String()
String x = new String();
//TODO 特点 String底层是一个char[]
//String(char[] vaule)
char[] value={'h','e','l','l','o'};
String x2 = new String(value);
//调用方法
//charAt(int index)
// 返回指定索引处的 char 值。
System.out.println(x2.charAt(2));//获取下标 2 对应的字符
//concat(String str)
// 将指定字符串连接到此字符串的结尾。
System.out.println(x2.concat("456"));//在x2后面拼接字符串
//contains(CharSequence s)
// 当且仅当此字符串包含指定的 char 值序列时,返回 true。
System.out.println(x2.contains("123"));//判断x2包含“123”吗?
//endsWith(String suffix)
// 测试此字符串是否以指定的后缀结束。
System.out.println(x2.endsWith("ddd"));//判断x2是否以“ddd”结尾
//equals(Object anObject)
// 将此字符串与指定的对象比较。
System.out.println(x2.equals("hello"));//判断x2是否与“hello”相等
}
}
总结
总的来说,今天新内容就学了 Object和String,更多的是复习前面的知识点,只有前面的过关了,后面的才学得明白,加油吧!