1. API
概述
API(Application Programming Interface),应用程序编程接口.Java API是一本程序员的字典,是jdk中提供给我们使用的类的说明文档.这些类将底层的代码实现封装了起来,我们不需要关系这些了是如何实现的,只需要学习这些类的使用方法.所以我们可以通过查询API的方式来学习Java提供的类
API使用步骤
- 打开帮助文档
- 点击显示,找打索引,看到输入框
- 你要找谁?在输入框里输入,然后回车
- 看包,java.lang下的类不需要导包.其他需要.
- 看类的解释和说明
- 学习构造方法
- 使用成员方法
2. Object类
2.1 概述
java.lang.Object
类是java语言中的根类,即所有类的父类.它中描述的所有方法子类都可以使用.在对象实例化的时候最终找到父类就是Object.
如果宇哥类没有特别指定父类,那么默认则继承字Object类
public class MyClass /* extends Object */ {
//...
}
2.2 toString方法
方法摘要
public String toString()
:返回该对象的字符串表示.
toString方法饭后有该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值.由于toString方法返回的结果是内存地址值,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此需要重写它.
覆盖重写
如果不希望使用费toString方法的默认行为,则可以对它进行覆盖重写.
class Person {
private String nsme;
private int age;
public Person(String nsme, int age) {
this.nsme = nsme;
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"nsme='" + nsme + '\'' +
", age=" + age +
'}';
}
}
- 在我们直接使用输出语句输出对象名的时候,其实同过对象调用其toString()方法
2.3 equals方法
方法摘要
public boolean equals(Object obj)
;指示其他对某个对象是否与此对象"相等".
调用成员方法equals并指定参数为零一对象,则可以判断者两个对象是否是相同的.这里的"相同"有默认和自定义里昂中法方式
默认地址比较
如果没有覆盖重写equals方法,那么Object类默认进行==运算符的对象地址比较,只要不是同一个对象,结果必然为false.
对象内容比较
如果希望进行对象的内容比较,即所有或指定的部分成员变量相同就判定两个对象相同,则可以覆盖重写equals方法
class Person {
private String nsme;
private int age;
public Person(String nsme, int age) {
this.nsme = nsme;
this.age = age;
}
@Override
public boolean equals(Object o) {
// 如果对象地址一样,则认为不同
if (this == o) return true;
// 如果参数为空,或者类型信息不一样,则认为不同
if (o == null || getClass() != o.getClass())
return false;
// 转换为当前类型
Person person = (Person) o;
// 要求基本类型相同,并且将引用类型教改java.util.Objects类的equals静态方法取用结果
return age == person.age && Objects.equals(nsme, person.nsme);
}
}
2.4 Objecs类
在IDEA自动重写equals代码中,使用到了java.util.objects
类.
在jsk7添加了一个Object三工具类,它提供了一些方法来操作对象,它由一些静态的使用方法组成,这些方法是null-save(空指针安全的)或null-tolerant(容忍空指针的),用于计算对象的hashcode,返回对象的字符串表示形式,比较两个对象
在比较两个对象的时候,Object的equals方法容易抛出空指针异常,而Objects类中的equals方法就优化了这个问题.
public static boolean equals(Object a,Oject b)
;判断两个对象是否相等.
public static boolean equals(Object a,Object b){
return (a == b)||(a !=null && a.equals(b));
}
3. Scanner类
3.1 概述
一个可以解析基本类型和字符串的简单文本扫面器.例如是用户能够从System.in中读取一个数
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
System.in
系统输入指的是同过键盘录入数据
3.2 Scanner使用步骤
查看类
java.util.Scanner
:该类需要import导入后使用.
查看构造方法
public Scanner(InputStream source)
:构造一个新的SCanner,它生产的值是从指定的输入流扫描的.
查看成员方法
public int nextInt()
:将输入信息的下个标记扫描为一个int值
// 1. 导包
import java.util.Scanner;
public class test1 {
public static void main(String[] args) {
// 2. 创建键盘录入数据的对象
Scanner sc = new Scanner(System.in);
// 3. 接受数据
System.out.println("请录入一个数据:");
int i = sc.nextInt();
// 4. 输出数据
System.out.println("i:"+ i);
}
}
4. String类
4.1 String类概述
概述
java.lang.String
类代表字符串,Java程序中方所有的字符串文字(例如"abc")都可以被看作是实现此类的实例.
类String中包括用于检查各个字符串的方法,比如用于字符串的比较,搜索字符串,提取字符串以及创建具有翻译为大写或小写的所有字符串的副本
特点
- 字符串不变:字符串的值在创建后不能被更改.
String s1 = "abc";
s1 + = "d";
System.out.println(s1); // "abcd"
// 内存中有"abc","abcd"两个对象,s1从指向"abc",改变指向,指向了'abcd".
* 因为String对象是不可改变的,所以他们可以被共享.
String s1 = "abc";
String s2 = "abc";
// 内存中只有一个"abc"对象被创建,同时s1和s2共享
* "abc"等效于char[] data = {'a','b','c'};
String str = "abc";
// 相当于:
char[] data = {'a','b','c'};
String str = new String(data);
// String 底层是靠字符数组实现的
4.2 使用步骤
- 查看类
java.lang.String
:此类不需要导包.
- 查看构造方法
public String()
:初始化信创建的String对象,以使其表示空字符序列public String(char[] value)
:通过当前参数中的字符数组来构造信的String.public String(byte[] bytes)
:通过使用平台默认字符集解码当前参数中的字节数组来构造新的String.
// 无参构造
String str = new String();
// 通过字符数组构造
char[] chars = {'a','b','c'};
String str2 = new String(chars);
// 通过字节数组构造
byte bytes = {97,98,99};
String str3 = new String(bytes);
4.3 常用方法
判断功能的方法
public boolean equals (Object o)
:将此字符串于指定对象进行比较public boolean equalsIgnoreCase(String anthorString)
;将此字符串于指定对象进行比较,忽略大小写
public class test1 {
public static void main(String[] args) {
// 创建字符串对象
String s1 = "hello";
String s2 = "hello";
String s3 = "HELLO";
System.out.println(s1==s2);
// boolean equals(Object obj)比较字符串的内容是否相同
System.out.println(s1.equals(s2)); // true
System.out.println(s1.equals(s3)); // false
// boolean equalsIgnoreCase(String str);比较字符串的内容是否相同,忽略大小写
System.out.println(s1.equalsIgnoreCase(s2)); // true
System.out.println(s1.equalsIgnoreCase(s3));// true
}
}
- Object是对象的意思,也是一种引用类型.作为参数类型,表示任意对象都可以传递到方法中
获取功能的方法
public int length()
;返回此字符串的长度public String concat (String str)
;将指定的字符串连接到该字符串的末尾public char charAt(int index)
;返回指定索引处的char值.public int indexOf(String str)
:返回指定字符串第一次出现在该字符串内的索引public String substring (int beginIndex)
;返回一个字符串,从beginIndex开始截取字符串到字符串结尾public String substring (int beginIndex,int endIndex)
;返回一个子字符串,从beginIndex到endIndex截取字符串,包含beginIndex,不包含endIndex.
public class test1 {
public static void main(String[] args) {
// 创建字符串对象
String s = "hello world";
// int length();获取字符串的长度,其实也就是字符个数
System.out.println(s.length());
// String concat(String str)将指定的字符串连接到该字符串的末尾
String s2 = s.concat("**hello itheima");
System.out.println(s2); // hello world**hello itheima
// char charAt(int index);获取指定索引处的字符
System.out.println(s.charAt(0));
System.out.println(s.charAt(1));
// int indexOf(String str)获取str在字符串对象中第一次出现的索引,没有返回-1
System.out.println(s.indexOf("1"));
System.out.println(s.indexOf("owo"));
System.out.println(s.indexOf("ak"));
// String substring(int start)从start开始截取字符串到字符串结尾
System.out.println(s.substring(0));
System.out.println(s.substring(5));
// String substring (int start ,int end)从start到end截取字符串.含start,不含end
System.out.println(s.substring(0,s.length()));
System.out.println(s.substring(3,8));
}
}
转换功能的方法
public char[] toCharArray()
;将此字符串转换为新的字符数组public bytep[] getBytes()
;使用平台的默认字符集将该String编码转换为新的字节数组public string replace(CharSequence target,CharSequence replacement)
;将与target匹配的字符串使用replacement字符串替换
public class test1 {
public static void main(String[] args) {
// 创建字符串对象
String s = "abcde";
// char[] toCharArray();把字符串转换为字符数组
char[] chs = s.toCharArray();
for (int i = 0; i < chs.length; i++) {
System.out.println(chs[i]);
}
// byte[] getBytes();把字符串转换为字节数组
byte[] bytes = s.getBytes();
for (int i = 0; i < bytes.length; i++) {
System.out.println(bytes[i]);
}
// 替换字母it为大写IT
String str = "itcast itheima";
String replace = str.replace("it","IT");
System.out.println(replace);// ITcast ITheima
}
}
分割功能的方法
public String[] split(String regex)
;将此字符串按照给定的规则拆分为字符串数组
public class test1 {
public static void main(String[] args) {
// 创建字符串对象
String s = "aa|bb|cc";
String[] strArray = s.split("\\|");//["aa","bb","cc"]
for (int i = 0; i < strArray.length; i++) {
System.out.println(strArray[i]);// aa bb cc
}
}
}