复习回顾
1、类和对象的关系
类是对象的模板, 对象是类的实例
2、类的定义格式
public class 类名{
成员变量 (表示类的属性)
成员方法 (表示类的行为或者功能)
构造方法 (创建对象, 初始化成员变量的值)
}
3、对象的使用
先定义类, 再通过类创建对象
类名 对象名 = new 类名();
访问成员变量: 对象名.成员变量名
访问成员访问: 对象名.成员方法名()
4、private关键字的作用
权限修饰符, 被private修饰的成员只能在本类中使用
修饰成员变量, 成员方法, 构造方法, 类
5、this关键字的作用
代表当前对象的引用
使用场景: 形参名字和成员变量同名时, 使用this来访问成员变量
6、构造方法的定义格式和特点
public 类名(参数列表){
初始化代码;
}
1. 通过new关键字调用
2. 作用: 创建对象, 初始化成员变量的值
3. 每次创建对象, 都会调用一次构造方法
4. 构造方法可以重载
1 API
1.1 API概述
-
什么是API
API (Application Programming Interface) :应用程序编程接口
JDK已有的一些功能 Scanner Random String Arrays ArrayList Math Date
-
java中的API
指的就是 JDK中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。
1.2 如何使用API帮助文档
- 打开帮助文档
[外链图片转存失败(img-HW2zvX1E-1563073359675)(assets/01.png)]
- 找到索引选项卡中的输入框
[外链图片转存失败(img-EklWpy5I-1563073359676)(assets/02.png)]
- 在输入框中输入要查找的类,例如Random。
[外链图片转存失败(img-g8MLfdNE-1563073359677)(assets/03.png)]
- 看类在哪个包下
[外链图片转存失败(img-tXMvhVDm-1563073359679)(assets/04.png)]
- 看类的描述
[外链图片转存失败(img-Ym8q9glV-1563073359681)(assets/05.png)]
- 看构造方法
[外链图片转存失败(img-H2GKTUsY-1563073359683)(assets/06.png)]
- 看成员方法
[外链图片转存失败(img-FpMRdiEv-1563073359684)(assets/07.png)]
快速生成方法调用的返回值:Ctrl + Alt + V
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
//读取字符串, 直到回车换行结束
//String line = sc.nextLine();
//读取字符串, 直到空格结束
String line = sc.next();
System.out.println(line);
}
}
2 String类
2.1 String类概述
String 类代表字符串类,Java 程序中所有的双引号字符串(比如"Hello"),都是 String 类的对象。
String 类在 java.lang 包下,使用时不需要导包。
2.2 String类的特点
- 字符串不可变,它们的值在创建后不能被更改。
- 虽然 String 的值是不可变的,但是它们可以被共享。(常量池)
- 字符串的底层原理是字节数组。
2.3 String类的构造方法
//无参构造方法
String()
//常见带参构造方法
String(String original) //根据字符串常量创建字符串对象
String(char[] value) //通过字符数组创建字符串对象(常用)
String(char[] value, int begin, int length) //从数组的begin开始,共length个字符创建字符串
String(byte[] values)//根据byte数组创建字符串
//最常用的字符串定义格式
String s = "字符串内容";
示例代码:
public class StringDemo {
public static void main(String[] args) {
//1、String():创建一个空白字符串对象,不含有任何内容
String s1 = new String();
System.out.println("s1:" + s1);
//2、String(String original) 根据字符串数据创建字符串对象
String s2 = new String("hello");
System.out.println(s2);
//3、String(char[] value) 通过字符数组创建字符串对象
char[] value = {
'h','e','l','l','o'};
String s3 = new String(value);
System.out.println(s3);
//4、String(char[] value, int offset, int length)
//根据字符数组的一部分数据创建字符串对象
String s4 = new String(value,0,3); //hel
String s5 = new String(value,2,3); //llo
System.out.println(s4);
System.out.println(s5);
//5、String(byte[] values) 根据byte数组创建字符串
byte[] arr = {
97,98,99};
String s6 = new String(arr); //abc
System.out.println(s6);
//6、最常用的方式:使用字符串常量构建
String s7 = "hello";
System.out.println(s7);
}
}
2.4 String创建对象的特点
1、使用new关键字创建字符串对象时,每次都会在堆中创建对象,并返回堆中的地址值给变量。所以new出来的字符串对象,每一个的地址都不同。
2、创建字符串常量时,JVM首先在常量池中查找是否存在该字符串,找到了直接引用常量池地址,否则在常量池里创建字符串,并将地址返回给变量。
public class StringDemo2 {
public static void main(String[] args) {
//每次都会在堆中创建对象,并返回地址
String s1 = new String("hello");
String s2 = new String("hello");
//判断常量池中是否存在“hello”常量,如果存在直接返回地址值。
//如果不存在,在常量池中创建“hello”对象,并返回地址值。
String s3 = "hello";
String s4 = "hello";
System.out.println( s1==s2 ); //false
System.out.println( s1==s3 ); //false
System.out.println( s3==s4 ); //true
}
}
测试案例
【练习】下列代码运行后输出的结果是什么?
public static void main(String[] args) {
String s1 = new String("abc");
String s2 = "abc";
System.out.println(s1 == s2); //false
String s3 = "a" + "b" + "c"; //String s3 = "abc";
String s4 = "ab" + "c"; //String s4 = "abc";
System.out.println(s3 == s4); //true
System.out.println(s2 == s3); //true
String s5 = "ab";
String s6 = s5+"c"; // new String的过程
System.out.println(s6 == s2); //false
}
2.5 字符串的比较
==号的作用:
- 基本数据类型:比较的是具体的数据值。
- 引用数据类型:比较的是内存地址值。
判断字符串内容是否相等:
public boolean equals(Object anObject) //严格区分大小写(判断密码)
public boolean equalsIgnoreCase(String anotherString) //不区分大小写 (判断验证码)
案例代码
public class StringDemo2 {
public static void main(String[] args) {
//每次都会在堆中创建对象,并返回地址
String s1 = new String("hello")