本人小白一枚,欢迎大家一起讨论学习,如有错误,还望大家指教。
什么是Scanner类?
简述:一个使用正则表达式来解析基本类型和字符串的简单文本扫描器。
查看类
java.util.Scanner :该类需要import导入后使用。
查看构造方法
public Scanner(InputStream source) : 构造一个新的 Scanner ,它生成的值是从指定的输入流扫描的。
查看成员方法
public int nextInt() :将输入信息的下一个标记扫描为一个 int 值。
public String nextLine() : 将输入信息的下一个标记扫描为一个字符串String。
举例说明:
键盘录入三个数据,并获取最大值。
public static void main(String[] aaa) {
Scanner scanner = new Scanner(System.in);
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();
int num3 = scanner.nextInt();
int max;
max = num1 > num2 ? num1 : num2;
max = max > num3 ? max : num3;
System.out.println("最大值:" + max);
}
什么是Random类?
简述:此类的实例用来生成伪随机数。
查看类
java.util.Random :该类需要 import导入使后使用。
查看构造方法
public Random() :创建一个新的随机数生成器
查看成员方法
public int nextInt(int n) :返回一个伪随机数,范围在 0 (包括)和 指定值 n (不包括)之间的 int 值。
举例说明:
游戏开始时,会随机生成一个1~100之间的整数 number 。玩家猜测一个数字 guessNumber ,会与 number 作比较,系统提示大了或者小了,直到玩家猜中,游戏结束。
public static void main(String[] aaa) {
Scanner scanner = new Scanner(System.in);
Random random = new Random();
int number = random.nextInt(100) + 1;
System.out.println(number);
while (true) {
System.out.println("请输入你要猜的数字:(1~100)");
int guessNumber = scanner.nextInt();
if (number < guessNumber) {
System.out.println("猜大了!");
} else if (number > guessNumber) {
System.out.println("猜小了!");
} else {
System.out.println("猜对了!");
break;
}
}
}
什么是String类?
此类是我们在开发中使用的比较多类。java.lang.String 类代表字符串。Java程序中所有的字符串文字(例如 “abc” )都可以被看作是实现此类的实例。(public final class String extends Object,是不能被继承的),
查看构造方法:
- public String() :初始化新创建的 String对象,以使其表示空字符序列。
- public String(char[] value) :通过当前参数中的字符数组来构造新的String。
- public String(byte[] bytes) :通过使用平台的默认字符集解码当前参数中的字节数组来构造新的 String
除了上面那三种使用构造器的方法创建字符串,我们还可以直接创建。String str = “Hello”;
注意:当我们直接写上双引号字符串,该字符串就存在于字符串常量池中。
在JDK6.0及之前版本,字符串常量池是放在Perm Gen区(也就是方法区)中;
在JDK7.0版本,字符串常量池被移到了堆中了。至于为什么移到堆内,大概是由于方法区的内存空间太小了。
特点:
- 字符串不变:字符串的值在创建后不能被更改。
public static void main(String[] args)
{
String s1 = "abc"; // 代表一个对象
String s2 = new String("abc"); // 代表两个对象
String s3 = "abc";
System.out.println(s1 == s2); // false
System.out.println(s1 == s3); // true
}
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底层是靠字符数组实现的。
String str = new String(data);
Stirng常用方法:
- 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 char[] toCharArray () :将此字符串转换为新的字符数组。
- public byte[] getBytes () :使用平台的默认字符集将该 String编码转换为新的字节数组。
- public String replace (CharSequence target, CharSequence replacement) :将与target匹配的字符串使 用replacement字符串替换。
- public String[] split(String regex) :将此字符串按照给定的regex(规则)拆分为字符串数组。
public class String_Demo03 {
public static void main(String[] args) {
//创建字符串对象
String s = "aa|bb|cc";
String[] strArray = s.split("|"); // ["aa","bb","cc"]
for(int x = 0; x < strArray.length; x++) { System.out.println(strArray[x]); // aa bb cc
}
}
}
当我们判断两个字符串是否相等时,推荐:“abc”.equals(str) 不推荐:str.equals(“abc”)
public boolean equalsIgnoreCase(String str):忽略大小写,进行内容比较。
StringBuffer(字符串缓冲区)
简述:可以对字符串增删,它是一个容器,很多方法与String相同,StringBuffer是可变长度的。
常用方法:
StringBuffer append()
:将指定的数据作为参数添加到已有数据的末尾处。StringBuffer insert(index, 数据)
:可以将数据插入到指定位置。StringBuffer delete(int start, int end)
:删除缓冲区中的数据,包含start,不包含end。StringBuffer deleteCharAt(int index)
:删除指定位置的字符。char charAt(int index)
:获取指定下标的字符。int indexOf(String str)
:获取指定子串的位置。int lastIndexOf(String str)
:获取子串最后一次出现的位置。int length()
:获取字符串的长度。String substring(int start, int end)
:截取字符串,包括开始,不包括结束。StringBuffer replace(int start, int end, String str)
:把指定的位置替换为子串,包括开始,不包括结束。void setCharAt(int index, char ch)
:设置指定位置的字符。StringBuffer reverse()
:字符串反转。
StringBuilder类
简述:一个可变的字符序列,此类提供了一个与StringBuffer兼容的API,但不保证同步,该类设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候,如果可能,建议优先使用该类。
StringBuffer:是线程同步,而StringBuilder是线程不同步。
StringBuilder的好处:- 提高效率
- 简化书写
- 提高安全性
什么是Arrays类?
简述:java.util.Arrays 此类包含用来操作数组的各种方法,比如排序和搜索等。其所有方法均为静态方法,调用起来非常简单。
操作数组的方法:
public static String toString(int[] a):返回指定数组内容的字符串表示形式。
public static void sort(int[] a):对指定的int型数组按数字升序进行排序。
什么是Math类?
简述:java.lang.Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。类似这样的工具类,其所有方法均为静态方法,并且不会创建对象,调用起来非常简单。
基本运算的方法:
- public static double abs(double a):返回double值的绝对值。
- public static double ceil(double num):向上取整。
- public static double floor(double num):向下取整。
- public static long round(double num):四舍五入。
- Math.PI代表近似的圆周率常量(double)。