Java学习笔记五: 常用类
Math 类:
Math下的所有方法和属性都是静态的
// 原型:
public final class Math extends Object {
}
Math常用方法和属性:
修饰符和类型 | 属性 | 描述 |
---|---|---|
static double | PI | 圆周率 |
static double | E | 自然常数 |
修饰符 | 方法 | 描述 |
---|---|---|
static | abs(a) | 返回a的绝对值 |
static | cbrt(a) | 返回a的立方根 |
static | ceil(a) | 返回a的向上取整结果 |
static | floor(a) | 返回a的向下取整结果 |
static | round(a) | 返回a的四舍五入结果 |
static | max(a, b) | 返回a和b中的最大值 |
static | min(a, b) | 返回a和b中的最小值 |
static | pow(a, b) | 返回a的b次方 |
static | random() | 返回一个[0, 1)的随机小数 |
Random类:
没有属性, 只有方法
//原型
public class Randomextends Object implements Serializable {
}
创建Random对象:
// 创建Random对象
// 需要导入的包
import java.util.Random;
// 第一种
Random r = new Random();
// 第二种
Random rr = new Random();
返回值类型 | 方法 | 描述 |
---|---|---|
int | nextInt(a) | 返回[0, a)中的一个的int型整数 |
float | nextFloat(a) | 返回[0, a)中的一个float型整数 |
以此类推 | 以此类推 | 以此类推 |
Scanner类:
标准输入I/O流
// 原型
public final class Scanner extends Object {
}
创建Scanner对象并用于输入:
// 导入
import java.util.Scanner;
//1.创建Scanner对象
Scanner input = new Scanner(System.in);
//2.接收一个数字
int num = input.nextInt();
返回值类型 | 方法 | 描述 |
---|---|---|
String | next() | 查找并返回来自此扫描器的下一个完整标记, 以输入的空格键、Tab键或Enter键等视为分隔符或结束符 |
int | nextInt() | 接受一个数字返回输入的数字, 空格为分隔符, \n结束 |
String | nextLine() | 返回输入的值, 以\n作为结束符 |
boolean | nextBoolean() | 扫描解释为一个布尔值的输入标记并返回该值 |
Scanner | reset() | 重置扫描器 |
void | close() | 关闭扫描器 |
注意:
在连续的两个及以上nextInt()之后用nextLine(), nextLine()会得到一个空
解释:
输入nextInt()以\n进行分隔, 输入完成后\n留在缓冲区, 而nextLine()也以\n进行分隔, 此时nextLine()会读取到上一个留在缓冲区的\n从而直接结束
解决方法:
在nextInt()后用nextLine()吸收\n
String类:
Java中所有数据类型都是类, Java是一门完全面向对象的语言
字符串: 字符连在了一起, 形成了字符串
字符串是一个常量
// 原型
public final class String implements java.io.Serializable, Comparable<String>, CharSequence {
}
在Java中, 一般用""括起来, 引号的内部内容就是字符串
可以理解为 Sting a = “123”, a中只是存了一个地址, "123"才是创建的字符串对象
字符串是常量, 是不可变数据类型, java将字符串存储在堆中的常量池中, 一旦被创建就不能被修改也不能被销毁
注意: 这里的不可变是说每一个字符串对象创建都会被存储在堆中, 常量池中已经存在的字符串对象就不能修改, 如果定义了一个字符串: String s = “123”(s并不是一个对象, 是一个变量, 指向对象"123"的内存地址), 这时候"123"这个字符串对象会存储在常量池, 不可被修改, 如果再写一句, s = “112”, 这时变量s会指向字符串对象"112"(s中存储的地址修改为"112"的地址), "112"会存储进常量池, 这时"123"并没有被删除或修改也在常量池中
为了安全, 设计为不可继承
创建一个String对象:
// 定义一个字符串
//方法一:
String str_1 = "hello";
//方法二:
String str_2 = new String("hello");
常见的字符串方法:
修饰符和返回值类型 | 方法 | 描述 |
---|---|---|
char | charAt(int index) | 返回下标index对应的字符 |
int | length() | 返回字符串长度 |
int | codePointAt(int index) | 返回下标对应的字符的unicode值 |
boolean | contains(CharSequence str) | 当且仅当此字符串包含指定的 char 值序列时,返回 true |
byte[] | getBytes([Charset charset]) | 字符串转换成字节 |
boolean | endsWith(String suffix) | 以suffix结尾返回true否则返回false |
boolean | startsWith(String suffix) | 判断是否以suffix开头 |
int | indexOf(String str) | 返回第一个匹配到的下标 |
int | lastIndexOf(String str) | 返回最后一个匹配到的下标 |
String | trim() | 清除两边空格 |
String | toUpperCase() | 转换为大写 |
String | toLowerCase() | 转换成小写 |
String | valueOf(args) | 相当于拼接, 可用于将数字转换成字符串 |
String[] | split(String regex[, int limit]) | 根据给定正则表达式的匹配拆分此字符串, limit是切割份数 |
static String | join(CharSequence delimiter, CharSequence… elements) | 将字符串数组按照符号拼接 |
static String | copyValueOf(char[] data) | 将字符数组转换为字符串 |
boolean | equals(Sting str) equals(Object anObject) | 两个字符串相等返回true, 否则返回false 将此字符串与指定的对象比较 |
boolean | equalsIgnoreCase(String anotherString) | 忽略大小写的equals |
int | compareTo(String Str) | 比较两个字符串的unicode值, 返回0则两个字符串相等, 指定数小于参数返回-1大于则返回1 |
int | compareToIgnoreCase(String str) | 忽略大小写的compareTo |
String | concat(String str) | 返回拼接后的字符串, 相当于两个字符串相加 |
boolean | isEmpty() | 只当length()等于0(字符串为空)返回true |
String | replace(char oldChar, char newChar) replace(CharSequence target, CharSequnce relacement | 替换每个匹配到的字符, 返回替换后的字符串 替换每个匹配到的子字符串, 返回替换后的字符串 |
String | substring(int beginIndex) substring(int beginIndex, int endIndex) | 返回一个新的字符串,它是此字符串的一个子字符串 |
注意: 字符串不要使用等号来判断是否相等
在java中 == 判断的是值, 用来判断字符串则是判断字符串的地址值, 不能用来判断字符串, 因为字符串创建的方式有多种, 不同的创建方式地址会不一样
String s = new String("abc"); // 并不只是创建一个对象, 而是一个或者两个
// 字符串是一个常量, 如果常量池中没有"abc", 则会在堆中创建一个对象, 在常量池中创建一个"abc"对象, 如果常量池中有"abc"则创建一个
String b = "abc"; // 有"abc"则不创建, 没有就创建一个
Character类:
Character 类在对象中包装一个基本类型 char 的值。 Character 类型的对象包含类型为
char 的单个字段
修饰符和返回值类型 | 方法 | 描述 |
---|---|---|
static boolean | isDigit(char ch) | 确定指定字符是否为数字 |
static boolean | isLetter(char ch) | 确定指定字符是否为字母 |
static boolean | isLetterOrDigit(char ch) | 确定指定字符是否为字母或数字 |
static boolean | isLowerCase(char ch) | 确定指定字符是否为小写字母 |
static boolean | isSpaceChar(char ch) | 确定指定字符是否为 Unicode 空白字符 |
static boolean | isUpperCase(char ch) | 确定指定字符是否为大写字母 |
需要特别注意的点(包含nextInt后nextLine失效的解决方法):
- static 关键字修饰的方法为静态方法不需要实例化类, 可直接调用
- 没有用static修饰的方法需要将对象实例化后, 通过"对象.方法()"的形式调用
- 在连续的两个及以上nextInt()之后用nextLine(), nextLine()会得到一个空
解释:
输入nextInt()以\n进行分隔, 输入完成后\n留在缓冲区, 而nextLine()也以\n进行分隔, 此时nextLine()会读取到上一个留在缓冲区的\n从而直接结束
解决方法:
在nextInt()后用nextLine()吸收\n