Day Five
类中:
- 成员变量 -> field
- 成员方法 -> method
控制台输入类Scanner:
new Scanner(System.in)
nextLine() (获取控制台输入的一行字符串,以回车键结束)
next() (获取控制台输入的一个字符串,以回车或空格结束)
nextInt() (获取控制台输入的一个整型变量)
nextDouble() (获取控制台输入的一个Double型变量)
JDK中提供的类 API -> 应用程序接口,工具-类
-
学习类,就是学习:
构造方法 —> 如何创建对象
成员变量 —> 基本可以忽略
成员方法 —> 实现的功能 -
接触过的类:
System: java.lang.System
Scanner: java.util.Scanner
Math: java.lang.Math
String: java.lang.String
Arrays: java.util.Arrays -
程序中,默认已经导入的 import 的软件包是 java.lang
-
软件包 package:
java.lang: 常用类(例:Math)
java.util: 工具类(例:Arrays)
java.io: 输入输出相关类
java.sql: 数据库相关
java.net: 网络相关
java.text: 格式化相关 -
常用类[一]
-
Random: — 随机数 —
构造方法: new Random()
int nextInt(): 产生一个随机整数
int nextInt(int n): 产生一个0~n的随机数比较Math.random() 和 Random 的使用
- Math.random() —> 不需要对象,直接调用
Random —> 需要创建对象 - Math.random() —> 返回double类型,范围固定0~1
Random中的nextInt() —> 返回int类型,范围可指定
- Math.random() —> 不需要对象,直接调用
-
String — 字符串 —
字符数组直接打印, 会直接连接字符数组中的字符,打印出一个字符串 —> JVM自动转换
字符串特点:- 直接赋值的字符串, 都存在字符串常量池中(堆中存储的优化)
- 字符串本身不可变
- 字符串不能用 == 来比较
-
构造方法
String s = “hello”;
String()
String(String)
String(char[])
String(char[], int offset, int count)
String(byte[])
String(byte[], int offset, int length) -
常用API:
char charAt(int index)
char[] toCharArray()
boolean equals(String)String substring(int start, int end) —>从start位置开始截取字符串到end位置结束不包括end
String substring(int start)boolean startsWith(String)
boolean startsWith(String, int offset) —> 从offset位置开始, 是否以指定字符串打头
boolean endsWith(String)int indexOf(char)
int indexOf(String)
int indexOf(char, int fromIndex) —> 从fromIndex开始往后, 第一次出现char的位置
int indexOf(String, int fromIndex)int length()
boolean equalsIgnoreCase(String)
String trim() — 去掉字符串左右两边的空白字符
public static void main(String[] args){ String a=" asfsaf "; System.out.println(a); System.out.println(a.trim()); } 结果: asfsaf asfsaf
concat
toUpperCase
toLowerCase —>字母大小写转换contains —>连接
replace —>替换
-
Scanner
Scanner console = new Scanner(System.in);
内存图(不同构造方法下的变量初始化,以及字符串连接):
String s6="he";
String s7=s6+"llo";
static: 修饰词静态的
(有一些类的方法在使用时, 不需要创建对象)
-
修饰成员变量
属于类的, 所有对象共用
通过类名.调用
只有一个 -
修饰方法
-
修饰代码块
静态代码块 -> 给类初始化
在类加载时执行的
作用: 用来执行消耗比较大的代码
-
xx.java -> xx.class -> 类加载 -> JVM方法区中
静态的成员变量是和类一起加载到方法区中的
结论: 当使用静态成员变量时, 对象不一定存在 -
类什么时候会加载?
第一次使用类会加载, 并且只加载一次
使用类的情况:- 创建对象
- 调用类的静态成员变量
- 调用类的静态方法
类加载会执行什么代码?
1.静态代码块
2.静态成员变量
内存图(Child类中定义了static变量money):
java.lang.Math:
double Math.random(): 返回0.0~1.0 之间的随机数
double Math.pow(double a, double b): 返回 a 的 b 次幂
java.util.Arrays:
String Arrays.toString(数组): 以[元素1, 元素2]格式打印数组
例如:在数组 [1,2,3,4,5], 添加一个 6
-
数组扩容: 创建新的数组
int[] arr = {1,2,3,4,5}; arr = new int[6]; // [1,2,3,4,5,0]
-
将原来的元素复制到新数组中
数组复制:
void System.arraycopy(src, srcPos, dest, destPos, count)