主要知识点:
一、Arrays类
Arrays 类是 Java 中提供的一个工具类,在 java.util 包中。该类中包含了一些方法用来直接操作数组,比如可直接实现数组的赋值、排序、比较、查找等操作。
主要具备以下功能:
给数组赋值:通过 fill 方法。
对数组排序:通过 sort 方法,按升序。
比较数组:通过 equals 方法比较数组中元素值是否相等。
查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。
序号 | 方法和说明 |
---|---|
1 | public static int binarySearch(Object[] a, Object key) 用二分查找算法在给定数组中搜索给定值的对象(Byte,Int,double等)。数组在调用前必须排序好的。如果查找值包含在数组中,则返回搜索键的索引;否则返回 (-(插入点) - 1)。 |
2 | public static boolean equals(long[] a, long[] a2) 如果两个指定的 long 型数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对都是相等的,则认为这两个数组是相等的。换句话说,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。 |
3 | public static void fill(int[] a, int val) 将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。 |
4 | public static void sort(Object[] a) 对指定对象数组根据其元素的自然顺序进行升序排列。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。 |
应用示例:
int[] a= {8,6,9,3,2,7};
//数组元素排序
System.out.print("数组a中的元素为:");
Arrays.sort(a);
// 输出所有数组元素
System.out.println(Arrays.toString(a));
//查找9这个元素
int index=Arrays.binarySearch(a, 9);
System.out.printf("9这个元素在%d位置\n",index+1);
// 声明数组b:int b=new int[6],用8填充b数组的每一个元素
int[] b=new int[6];
Arrays.fill(b, 8);
System.out.print("数组b中的元素为:");
System.out.println(Arrays.toString(b));
// 判断数组a和数组b是否相等
boolean equal=Arrays.equals(a, b);
if(equal)
System.out.println("两个数组相等");
else
System.out.println("两个数组不相等");
b=Arrays.copyOf(a, 6);
// 拷贝数组a到数组b中,再判断两个数组是否相等
equal=Arrays.equals(a, b);
if(equal)
System.out.println("两个数组相等");
else
System.out.println("两个数组不相等");
二、String类
String 类位于 java.lang包中。
String 类代表不可变的字符串。
Java 程序中的所有字符串常量(如 “abc” )都作为此类的对象。
String类的构造方法:
字符串在内存中的存放:
用法小结:
§字符串常量存储在“数据区(字符串池)”。
§使用构造方法创建字符串对象,存储在“堆区”。
§使用字符串连接符连接若干字符串常量,如“abc” + “efg”,会创建新的字符串常量,存储在“数据区”。
§使用字符串连接符连接字符串常量和字符串变量,如“abc” + s1,或 s1 + s2,会创建新的字符串对象,存储在“堆区”。
§String 对象的长度和内容是不可变的。给 String 类型的变量重新赋值时,并不是改变了原来的字符串内容,而是生成了一个新的字符串。
主要方法:
应用举例:
public class Test8 {
public static void main( String args[] ) {
String s1 = “我爱学java”;
String s2 = “我爱学JAVA”;
System.out.println( s1.length( ) ); // 7
System.out.println( s1.equals(s2) ); // false
System.out.println( s1.equalsIgnoreCase(s2) ); // true
s1.replace( ‘我’, ‘你’ );
System.out.println( s1 ); // 我爱学java
}
}
应用举例:
public class Test9 {
public static void main( String args[] ) {
String s = “我爱学java”;
System.out.println( s.startsWith( “我” ) ); // true
s = s.toUpperCase();
System.out.println( s ); // 我爱学JAVA
}
}
应用举例:
public class Test10 {
public static void main( String args[ ] ){
String s = “ Welcome to Java World ”;
s = s.trim( );
System.out.println( s); // Welcome to Java World
char c = s.charAt( 11);
System.out.println( c); // J
String t = s.substring( 11);
System.out.println( t); // Java World
String[ ] a = s.split(“ ” );
for( inti=0; i<a.length; i++ ){
System.out.println( a[i]); //
}
}
}
public class Test11 {
public static void main( String args[] ) {
String email = “JohnSmith@sina.com.cn”;
inti = email.indexOf( ‘@’ );
if( i == -1 ) {
System.out.println( “非法邮箱地址” );
}
else {
int j = email.indexOf( “sina”, i );
if ( j != -1 ) {
System.out.println( “sina用户” );
}
}
}
}
应用举例:
public class Test12 {
public static void main( String args[] ) {
inti = 352001890;
String s = String.valueOf( i );
System.out.println( i + “是”+ s.length( ) + “位数” );
}
}
应用举例:
import java.util.*;
public class Test13 {
public static void main( String[ ] args) {
String name, mail, tel,regex;
Scanner sc = new Scanner( System.in );
while( true ) {
System.out.println( “请输入姓名:” );
name = sc.nextLine( );
regex = “[\u4e00-\u9fa5]+([ .]*[\u4e00-\u9fa5]+)*”;
if( name.matches( regex ) ) {
name = name.replaceAll( “ +”, “” );
name = name.replaceAll( “\\.{2,}”,“.” );
break;
}
else
System.out.println( “错误姓名” );
}
}
while(true ) {
System.out.println( “请输入电话:” );
tel = sc.nextLine( );
regex = “((\\(?\\d{3,4}[)-]?)?\\d{7,8})|\\d{11}”;
if( tel.matches( regex ) )
break;
else
System.out.println( “错误电话” );
}
while( true ) {
System.out.println( “请输入邮箱:” );
mail = sc.nextLine( );
regex = “\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*”;
if( mail.matches( regex ) )
break;
else
System.out.println( “错误邮箱地址” );
}
}
}
二、Math类与Random类
1、Math类
Math类是数学操作类,提供了一系列用于数学运算的静态方法,包括求绝对值、三角函数等。Math类中有两个静态常量PI和E,分别代表数学常量π和e。Math类比较简单,初学者可以通过查看API文档来学习Math类的具体用法。例如:
public class Test14 {
public static void main( String args[] ) {
System.out.println("-5的绝对值为:"+Math.abs(-5));
System.out.println("两个数中较大值为:"+Math.max(6,-7.8));
System.out.println("两个数中较小值为:"+Math.min(6,-7.8));
System.out.println("产生一个大于等于0.0小于1.0的随机数:"+Math.random()));
}
}
2、Random类
在JDK的java.util包中有一个Random类,它可以在指定的取值范围内随机产生数字。在Random类中提供了两个构造方法,具体如下表所示:
方法说明 | 功能描述 |
Random() | 构造方法,用于创建一个伪随机数生成器 |
Random(long seed) | 构造方法,使用一个long型的种子创建伪随机数生成器 |
表中列举了Random类的两个构造方法,其中第一个构造方法是无参的,通过它创建的Random实例对象每次使用的种子是随机的,因此每个对象所产生的随机数不同。如果希望创建的多个Random实例对象产生相同序列的随机数,则可以在创建对象时调用第二个构造方法,传入相同的种子即可。
相对于Math的random()方法而言,Random类提供了更多的方法来生成各种伪随机数,不仅可以生成整数类型的随机数,还可以生成浮点类型的随机数,Random类中的常用方法如下表所示。
方法说明 | 功能描述 |
boolean nextBoolean() | 随机产生布尔型的随机数 |
double nextDouble() | 随机产生double类型的随机数 |
float nextFloat() | 随机产生float类型的随机数 |
int nextInt() | 随机产生int类型的随机数 |
int nextInt(int n) | 随机产生0~n之间int类型的随机数 |
long nextLong() | 随机产生long类型的随机数 |
表中,列出了Random类常用的方法,其中,Random类的nextDouble()方法返回的是0.0和1.0之间double类型的值,nextFloat()方法返回的是0.0和1.0之间float类型的值,nextInt(int n)返回的是0(包括)和指定值n(不包括)之间的值。
三、Math类
Math类是数学操作类,提供了一系列用于数学运算的静态方法,包括求绝对值、三角函数等。Math类中有两个静态常量PI和E,分别代表数学常量π和e。Math类比较简单,初学者可以通过查看API文档来学习Math类的具体用法。例如:
public class Test14 {
public static void main( String args[] ) {
System.out.println("-5的绝对值为:"+Math.abs(-5));
System.out.println("两个数中较大值为:"+Math.max(6,-7.8));
System.out.println("两个数中较小值为:"+Math.min(6,-7.8));
System.out.println("产生一个大于等于0.0小于1.0的随机数:"+Math.random()));
}
}
四、Random类
在JDK的java.util包中有一个Random类,它可以在指定的取值范围内随机产生数字。在Random类中提供了两个构造方法,具体如下表所示:
方法说明 | 功能描述 |
Random() | 构造方法,用于创建一个伪随机数生成器 |
Random(long seed) | 构造方法,使用一个long型的种子创建伪随机数生成器 |
表中列举了Random类的两个构造方法,其中第一个构造方法是无参的,通过它创建的Random实例对象每次使用的种子是随机的,因此每个对象所产生的随机数不同。如果希望创建的多个Random实例对象产生相同序列的随机数,则可以在创建对象时调用第二个构造方法,传入相同的种子即可。
相对于Math的random()方法而言,Random类提供了更多的方法来生成各种伪随机数,不仅可以生成整数类型的随机数,还可以生成浮点类型的随机数,Random类中的常用方法如下表所示。
方法说明 | 功能描述 |
boolean nextBoolean() | 随机产生布尔型的随机数 |
double nextDouble() | 随机产生double类型的随机数 |
float nextFloat() | 随机产生float类型的随机数 |
int nextInt() | 随机产生int类型的随机数 |
int nextInt(int n) | 随机产生0~n之间int类型的随机数 |
long nextLong() | 随机产生long类型的随机数 |
表中,列出了Random类常用的方法,其中,Random类的nextDouble()方法返回的是0.0和1.0之间double类型的值,nextFloat()方法返回的是0.0和1.0之间float类型的值,nextInt(int n)返回的是0(包括)和指定值n(不包括)之间的值。