对象数组

定义:用来存储对象的数组

Student[] student = new Student[5] ;

Arrays:针对数组操作的工具类  (提供了针对数组排序的方法和二分搜索法)

public static String toString(int[] a):可以将int类型的数组转换成字符串 ([元素1,元素2,元素3...])

public static void sort(int[] a)对指定的 int 型数组按数字升序进行排序

public static int binarySearch(int[] a,int key):二分搜索法: 在int类型的数组a中查找key元素所对应的索引

代码示例

public class ArraysDemo {public static void main(String[] args) {//定义一个数组:静态初始化int[] arr = {24,69,80,57,13} ;//public static String toString(int[] a):可以将int类型的数组转换成字符串 ([元素1,元素2,元素3...])//直接用Arrays去调用String str = Arrays.toString(arr) ;System.out.println("str:"+str);//[24, 69, 80, 57, 13]System.out.println("-----------------------");
//      public static void sort(int[] a)对指定的 int 型数组按数字升序进行排序Arrays.sort(arr);//按数组升序排序String str2 = Arrays.toString(arr) ;System.out.println("str2:"+str2);System.out.println("-----------------------");//public static int binarySearch(int[] a,int key):二分搜索法: //在int类型的数组中查找key元素的索引//需求:查找57元素对应的索引//Arrays.sort(arr);int index = Arrays.binarySearch(arr, 57) ;System.out.println("index:"+index);int index2 = Arrays.binarySearch(arr, 577) ;System.out.println("index2:"+index2);}
}

Arrays两个常用方法的源码分析

//int[] arr = {24,69,80,57,13} ;public static String toString(int[] a)
//toString(int[] a)的源码//以后在实际开发中,只要有引用类型,在对引用类型数据进行操作的时候,对引用类型的对象进行非空判断,
//防止空指针异常(NullPointerException)public static String toString(int[] a) {if (a == null) //对数组进行非空判断return "null";int iMax = a.length - 1; //arr.length-1   //a--->arrif (iMax == -1)return "[]";StringBuilder b = new StringBuilder();  //创建了一个字符串缓冲区b.append('[');            //先追加了左中括号:[for (int i = 0; ; i++) {b.append(a[i]);      //给缓冲区中追加数组中的元素if (i == iMax)return b.append(']').toString();   //返回并且并追加了右中括号:]并且将数据元素转换为字符串b.append(", ");                          //如果不是最后一个索引,那么中间追加逗号//if(i == iMax){//    return b.append(']').toString();//}else{// b.append(", ");//}}}public static int binarySearch(int[] a,int key)//它的源码:public static int binarySearch(int[] a, int key) {//a--->arr   key-->577return binarySearch0(a, 0, a.length, key);}/**a--->arr:指定的int类型的数组fromIndex:指定索引开始:0toIndex:arr.length 5 key:577*/nt[] arr = {13,24,57,69,80} ;private static int binarySearch0(int[] a, int fromIndex, int toIndex,int key) {int low = fromIndex;     //最小索引int high = toIndex - 1;//  最大索引  4while (low <= high) { //如果最小索引小于=最大索引  int mid = (low + high) >>> 1;  >>> :无符号右移动(位运算符)    //中间索引:mid = 2 ,3 ,4 位^:位异或位&:位与位|:位或<< :左移动有符合的数据表示法(原码,反码,补码)计算机底层运算数据的时候:通过补码进行运算的int midVal = a[mid];      //  查找中间索引对应的元素:arr[2] = 57   69  80 if (midVal < key)          //判断:中间索引对应的元素 < key =577low = mid + 1;       //low = mid + 1;   mid = (取到最大的mid的值) 4+1 = 5 else if (midVal > key)high = mid - 1;elsereturn mid; // key found}return -(low + 1);  // key not found.    // return  -(low+1) = -6}

Calendar类:

Calendar 类是一个日历类(抽象类),它的作用是为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历

字段之间进行转换提供方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法

是一个抽象类,如何实例化?

public static Calendar getInstance() :通过一个静态功能来创建日历类的对象

代码示例

public class CalendarDemo {public static void main(String[] args) {// 创建日历类的对象// Calendar rightNow = new Calendar() ; 不能实例化Calendar rightNow = Calendar.getInstance();// System.out.println(rightNow);// public int get(int field)返回给定日历字段的值// 获取年:public static final int YEARint year = rightNow.get(Calendar.YEAR);// 获取年中的月份:public static final int MONTHint month = rightNow.get(Calendar.MONTH);// public static final int DATE :获取月份的那一天int date = rightNow.get(Calendar.DATE);System.out.println(year + "年" + (month + 1) + "月" + date + "日"); // 通过日历类获取当前系统时间}
}

Calendar中的两个常用方法:

public abstract void add(int field,int amount)根据日历的规则,给指定的日历字段添加或减去指定的时间量 (这个方法常用)

public final void set(int year, int month,int date)设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值

public class CalendarDemo2 {public static void main(String[] args) {// 算出当前时间Calendar c = Calendar.getInstance();// 实例化Calendar类,创建Calendar类的对象// 年int year = c.get(Calendar.YEAR);// 月int month = c.get(Calendar.MONTH);// 日int date = c.get(Calendar.DATE);System.out.println(year + "年" + (month + 1) + "月" + date + "日");// 需求:3年前的今天/** c.add(Calendar.YEAR, -3); //获取年 year = c.get(Calendar.YEAR) ;* System.out.println(year+"年"+(month+1)+"月"+date+"日");*/// 需求:5年后的10天前c.add(Calendar.YEAR, 5);c.add(Calendar.DATE, -10);// 获取年year = c.get(Calendar.YEAR);date = c.get(Calendar.DATE);System.out.println(year + "年" + (month + 1) + "月" + date + "日");System.out.println("------------------------------");// public final void set(int year, int month,int date)设置日历字段 YEAR、MONTH 和// DAY_OF_MONTH 的值c.set(2018, 5, 20);// 获取年year = c.get(Calendar.YEAR);// 获取月month = c.get(Calendar.MONTH);// 获取日date = c.get(Calendar.DATE);System.out.println(year + "年" + (month + 1) + "月" + date + "日");}
}

需求:获取任意一年的二月份天数  (改进:键盘录入一个年份)

分析:

1)键盘录入任意一个年份

2)创建日历类对象

3)设置年月日

set(录入year,2,1) ; //实际是3月1日

4)再利用add(int field,int amount) : 在这里只需要将日期往前退一天即可

代码示例

public class CalendarTest {public static void main(String[] args) {// 创建键盘入对象Scanner sc = new Scanner(System.in);// 录入数据System.out.println("请输入一个年份:");int year = sc.nextInt();// 创建日历类对象Calendar c = Calendar.getInstance();// 设置年月日c.set(year, 2, 1); // 实际为3月1日// 只需要将日期往前推一天即可c.add(Calendar.DATE, -1);3月1日往前退一天为2月29日或者2月28日,实际将日期设置为**年2月29或者2月28日System.out.println("二月有:" +c.get(Calendar.DATE) + "天");}
}

System类

System类包含一些有用的类字段和方法。它不能被实例化。

常用的方法:

public static void gc()运行垃圾回收器。

public static void exit(int status)终止当前正在运行的 Java 虚拟机。参数用作状态码;  一般情况,需要终止

Jvm,那么参数为0

public static long currentTimeMillis()返回以毫秒为单位的当前时间

public static void arraycopy(Object src,int srcPos, Object dest,int destPos, int length)

从指定源数组中复制一段数组元素,复制操作从指定的位置开始,到目标数组的指定位置结束
               src:原数组
               dest:目标数组
               srcPos :原数组的开始位置

destPos:目标数组的结束位置

代码示例

public class SystemDemo2 {public static void main(String[] args) {System.out.println("我们喜欢高圆圆....");// public static void exit(int status)// System.exit(0); //jvm已经退出了System.out.println("我们也喜欢杨桃....");System.out.println("-----------------------");// public static long currentTimeMillis()返回以毫秒为单位的当前时间long time = System.currentTimeMillis();System.out.println("tiem:" + time);// 单独使用,没有意义// 一般情况,来测试一段代码的执行效率 (后面:jdbc: PreparedStatement Statement// 也可以用currentTimeMillis来测试速率 )long start = System.currentTimeMillis();for (int x = 0; x < 1000; x++) {System.out.println("hello" + x);}long end = System.currentTimeMillis();System.out.println("共耗时:" + (end - start) + "毫秒");System.out.println("---------------------------");int[] arr1 = { 11, 22, 33, 44, 55, 66 };int[] arr2 = { 5, 6, 7, 8, 9, 10 };System.out.println(Arrays.toString(arr1));System.out.println(Arrays.toString(arr2));System.out.println("---------------------------");System.arraycopy(arr1, 1, arr2, 2, 2);System.out.println(Arrays.toString(arr1));System.out.println(Arrays.toString(arr2));}
}

public static void gc()运行垃圾回收器。 public static void exit(int status)终止当前正在运行的 Java 虚拟机。

参数为状态码, 一般情况下,需要终止 Jvm(Java虚拟机),那么参数为0

代码示例

public class Person {private String name;private int age;public Person() {super();}public Person(String name, int age) {super();this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + "]";}@Overrideprotected void finalize() throws Throwable {System.out.println("开始回收不用的对象了:" + this);super.finalize();}}
public class SystemDemo {    public static void main(String[] args) {        // 创建一个Person类的对象
        Person p = new Person("高圆圆", 27);
        System.out.println(p);
        // 让对象p不指定堆内存了
        p = null;
        System.gc(); // 运行垃圾回收器,实质是执行的finalize()方法
    }
}

Date类

java.util.Date:

类 Date 表示特定的瞬间,精确到毫秒

构造方法:

public Date()表示分配它的时间(精确到毫秒)。

public Date(long date):创建一个日期对象,指定毫秒值 (需要将long类型所对应的时间毫秒值转换成Date对象)

public void setTime(long time):设置毫秒值

代码示例

构造方法

public class DateDemo {public static void main(String[] args) {Date d = new Date() ;System.out.println(d); //Date类型的日期格式:Sun Apr 29 11:22:47 CST 2018   //Date的文本格式:  String :2018-4-29Date dd = new Date(1000) ;System.out.println(dd);}
}
package org.westos.d_date;import java.util.Date;/*** public long getTime() 将Date--->long类型的毫秒值* * @author Administrator**/
public class DateDemo2 {public static void main(String[] args) {// 创建日期类对象Date d = new Date();long time = d.getTime();System.out.println(time);// System.out.println(System.currentTimeMillis());}
}

重点:Date的日期格式和文本格式(String类型)之间进行转换

Date---->String(格式化)

String-->Date(解析)

中间的转换:使用中一个中间类:DateFormat,并且DateFormat是一个抽象类,抽象意味着不能实例化,所以应该考虑用它的子类:

SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析

(文本 -> 日期)和规范化。

SimpelDateFormat的构造方法:

public SimpleDateFormat(String pattern) :构造一个SimpleDateFormat对象,根据pattern(模式:规则)
 
   SimpleDateFormat sdf = new SimpleDateFormat("xxx年xx月xx日") ;
  
   日期和时间模式
   
    年: yyyy
    月: MM
    日: dd
  
    时: hh
    分: mm
   秒: ss
 
 实际开发中:牵扯时间的东西,经常Date--String  String--Date

代码示例

public class DateDemo3 {public static void main(String[] args) throws ParseException {// Date---String:(格式化)// 创建一个日期对象Date d = new Date();// 创建SimpleDateFormat类对象SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");// public final String format(Date date):格式化String str = sdf.format(d);System.out.println("str:" + str);System.out.println("----------------------");// String:日期文本格式:---->Date:日期格式// public Date parse(String source):解析String strDate = "2018-6-25";// 创建SimpleDateFormat类对象// SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日") ;SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");// 注意 :simpleDateFormat在解析文本格式的时候,里面的模式(规则)一定要和文本格式的模式一致,否则就出现PareseExceptionDate dd = sdf2.parse(strDate);System.out.println("dd:" + dd);// dd:Mon Jun 25 00:00:00 CST 2018}
}

需求:

键盘录入你的出生年月日,算一下你来到这个世界多少天?
 分析:
     1)创建键盘录入对象,录入一个数据出生年月日 
     2)1990-xx-xx
     3)将文本格式的数据解析成日期对象 
     4)getTime() ;获取出生日期所对应的时间毫秒值 
     5)获取当前系统的时间毫秒值
     6) (5)-(4) = long time

7)换算

代码示例

public class DateTest {public static void main(String[] args) throws ParseException {/** //创建键盘录入对象* * * try { //捕获异常(IO流异常类说到)* * } catch (ParseException e) { e.printStackTrace(); //将代码出现的原因以及多少行会打印在控制台上 }*/Scanner sc = new Scanner(System.in);// 录入数据System.out.println("请输入您的出生年月日:");String str = sc.nextLine(); // yyyy-MM-dd// 创建SimpleDateFormat对象SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date date = sdf.parse(str);// 解析为Date日期格式// 获取出生年月所对应的系统时间long oldTimee = date.getTime();// date为出生年月所对应的日期,date.getTime()获取的是出生年月所对应的时间// 获取当前系统所对应的时间毫秒值long newTime = System.currentTimeMillis();long time = newTime - oldTime;long day = time / 1000 / 60 / 60 / 24;// 进行单位换算System.out.println("您来到世间已经有:" + day + "天");}
}

!!!

这是Date和Stirng文本格式进行相互转换的工具类

package org.westos.d_date;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;import com.sun.org.apache.xpath.internal.operations.String;/*** 这是Date和Stirng文本格式进行相互转换的工具类* * @author Administrator* @version v1.0*/
public class DateUtil {// 无参构造私有化private DateUtil() {}/*** 这是一个将Date的日期格式转换成日期的文本格式* * @param format*            模式* @param d*            需要被格式化的Date格式* @return 返回的就是日期的文本格式*/public static String dateToString(String format, Date d) {/** SimpleDateFormat sdf = new SimpleDateFormat(format) ; String s =* sdf.format(d) ; return s ;*/return new SimpleDateFormat(format).format(d);// 调用匿名对象new SimpleDateFormat(format),再用匿名对象去掉用format()方法,// 将Date转化为(格式化为)日期的文本格式}/*** 这一个将字符串文本日期格式转换Date的日期格式的功能* * @param format*            模式* @param s*            需要被解析的日期文本格式* @return 返回的就Date日期格式* @throws ParseException*             解析如果出问题了,就会有这个异常*/public static Date stringToDate(String format, String s) throws ParseException {return new SimpleDateFormat(format).parse(s);// 调用匿名对象new SimpleDateFormat(format),再用匿名对象去掉用parse()方法,将日期的文本格式// 转化为(解析为)Date的日期格式}
}
package org.westos.d_date;import java.text.ParseException;
import java.util.Date;/*** * 测试转换功能*/
public class DateUtilTest {public static void main(String[] args) throws ParseException {Date d = new Date();// Date--->StringString s1 = DateUtil.dateToString("yyyy-MM-dd", d);System.out.println("s1:" + s1);String s2 = DateUtil.dateToString("yyyy年MM月dd日 hh:mm:ss", d);// 第一个参数为日期的格式System.out.println(s2);System.out.println("----------------------");// String--->DateString str = "2018年10月10日";Date dd = DateUtil.stringToDate("yyyy年MM月dd日", str); // 第二个参数为String类型,stringToDate()方法的返回值为Date类型的System.out.println(dd);}
}

Math类

Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。

常用的方法:

public static int abs(int a):绝对值

public static double ceil(double a):向上取整

public static double floor(double a):向下取整

public static int max(int a,int b):求最大值

public static int min(int a,int b):求最小值

public static double pow(double a,double b):a的b次幂

public static double random()返回带正号的 double 值,该值大于等于 0.0 且小于 1.0

public static int round(float a):四舍五入

public static double sqrt(double a):一个数的正平方根

JDK5的特性:静态导入(导入方法的级别)

代码示例

public class MathDemo {public static void main(String[] args) {//        public static int abs(int a):绝对值System.out.println(Math.abs(-10));System.out.println(Math.abs(10));//public static double ceil(double a):向上取整System.out.println(Math.ceil(12.34));//public static double floor(double a):向下取整System.out.println(Math.floor(12.34));//public static int max(int a,int b):求最大值System.out.println(Math.max(10, 20));//方法中嵌套方法//方法递归(方法本身调用方法的这种现象)System.out.println(Math.max(Math.max(10, 20), 20));//public static double pow(double a,double b):a的b次幂System.out.println(Math.pow(2.0, 3.0));//public static double random()返回带正号的 double 值,该值大于等于 0.0 且小于 1.0System.out.println(Math.random());//public static int round(float a):四射五入System.out.println(Math.round(12.56));//       public static double sqrt(double a):一个数的正平方根System.out.println(Math.sqrt(4));System.out.println("---------------------------------------");//面试题:有两个变量,让他们的值进行互换 (考官想问的是:你能否指定位^的特点)int a = 10 ;int b = 20 ;//实际开发中:中间变量的方式进行互换//位^的特点:一个数据被另一个数据位^两次,其值是它本身/*System.out.println(a^b^b);System.out.println(a^b^a);*/System.out.println("a:"+a+",b:"+b);//=号左边: a ,b,a//=右边: a^ba = a ^ b ; b = a ^ b ;//b = a^b ^ ba = a ^ b ; System.out.println("a:"+a+",b:"+b);}}    

Random:是一个可以获取随机数的类

public Random():无参构造方法

public Random(long seed) :指定long类型的数据进行构造随机数类的对象

public int nextInt():获取随机数,它的范围是在int类型的范围之内

public int nextInt(int n):获取随机数,它的范围是在[0,n)之间

代码示例

public class RandomDemo {public static void main(String[] args) {//创建Random类对象Random r = new Random() ;for(int x = 0 ; x < 10 ; x ++) {int n = r.nextInt(5) ;System.out.println(n);}}
}

正则表达式

需求:键盘录入一个qq号码,需要校验QQ号码
要求: 1)5~15的数字组成
  2)不能以0开头
 分析:
  1)键盘录入一个QQ号码
  2)写一个校验的功能  ,返回值是boolean
  3)在里面进行判断
 邮箱校验非常复杂的校验
 引入正则表达式

代码示例

package org.westos;import java.util.Scanner;public class RegexDemo {public static void main(String[] args) {// 创建键盘录入对象Scanner sc = new Scanner(System.in);// 接收数据System.out.println("请输入一个QQ号码:");String QQ = sc.nextLine();// 调用校验的功能boolean flag = checkQQ(QQ);System.out.println(flag);}public static boolean checkQQ(String qq) {// 假设 :返回值是trueboolean flag = true;// 进行判断// 1) 5-15的if (qq.length() >= 5 && qq.length() <= 15) {// 符合了长度之后,并且不能以0开头if (!qq.startsWith("0")) {// 符合了之后,但是数字// 将字符串转换成字符数组char[] chs = qq.toCharArray();// 遍历出来for (int x = 0; x < chs.length; x++) {// 获取到每一个字符char ch = chs[x];// 在for循环来判断是否是数字:Character 有一个方法:isDigit()if (!Character.isDigit(ch)) {// 不是数字flag = false;break;}}} else {// 以"0"开头flag = false;}} else {// 长度不符合flag = false;}return flag;}
}

使用正则表达式进行改进

package org.westos;import java.util.Scanner;public class RegexDemo {public static void main(String[] args) {Scanner sc = new Scanner(System.in);// 接收数据System.out.println("请输入一个QQ号码:");String QQ = sc.nextLine();boolean flag = checkQQ(QQ);System.out.println(flag);// 定义正则规则/** String regex= "[1-9][0-9] {4,14}" ; //public static boolean matches(String* regex) : //检验我们的字符串数据是否和正则规则匹配,如果匹配成功则返回true boolean flag = qq.matches(regex)* ; return flag ;*/}public static boolean checkQQ(String qq) {// TODO Auto-generated method stubreturn qq.matches("[1-9]\\d{4,14}");}
}

正本表达式语法

字符

x x字符
\\ 反斜线字符
\t 制表符 
\n 换行符
\r 回车符

字符类:
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)

预定义字符类:
. 任何字符 如果本身就是. \. qq.com 写正则表达式: \\.) 
\d 数字:[0-9] 写正则表达式 : \\d
\w 单词字符:[a-zA-Z_0-9]:大小写字母,数字字符 写正则表达式: \\w
边界匹配器:
^ 行的开头 
$ 行的结尾 
\b 单词边界尾 (helloword?haha:world)

Greedy 数量词(重点)
X? X,零次 或 一次  
X* X,零次或多次 
X+ X,一次或多次 
X{n} X字符恰好出现n次
X{n,} X字符至少出现n次

X{n,m} X字符至少出现n次,但不超过m次

需求

自己校验:手机号码 定义规则: 136.... 13689257284 13688886666 ....

代码示例

public class RegexDemo3 {public static void main(String[] args) {// 创建键盘录入对象Scanner sc = new Scanner(System.in);// 接收数据System.out.println("请输入一个手机号码:");String phone = sc.nextLine();// 定义正则规则String regex = "1[36]\\d{9}";boolean flag = phone.matches(regex);System.out.println(flag);}
}

public String replaceAll(String regex,String replacement)
  使用给定的 replacement替换此字符串中所有符合正则表达式的子字符串。

package org.westos;import java.util.Scanner;public class RegexDemo {public static void main(String[] args) {// 定义一个字符串String s = "hello12345World781323244454JavaEE";System.out.println(s);// 需求:要将数字字符被替换成*String regex = "\\d+";// X+ 一次或多次// 定义替换的字符串String ss = "*";String result = s.replaceAll(regex, ss);System.out.println("result:" + result);}
}

键盘录入邮箱,校验邮箱 邮箱: qq邮箱 126邮箱 163邮箱 新浪微博邮箱 企业邮箱 919081924@qq.com

例如:zhangsan@163.com

xibukaiyuan@westos.com.cn

代码示例

public class RegexTest {public static void main(String[] args) {// 创建键盘录入对象Scanner sc = new Scanner(System.in);// 接收数据System.out.println("请输入一个邮箱:");String email = sc.nextLine();// 定义正则规则// String regex = "[a-zA-Z_0-9]+@[a-zA-Z_0-9]{2,6}(\\.[a-zA-Z_0-9]+){1,4}" ;String regex = "\\w+@\\w{2,6}(\\.\\w+){1,4}";boolean flag = email.matches(regex);System.out.println("flag:" + flag);}
}

public String[] split(String regex) :字符串的分割功能

按照指定的格式进行分割,分割后返回的是一个字符串数组

需求:

QQ搜索好友 / 百合网/世纪佳缘

18-24  女

代码示例

public class RegexTest2 {public static void main(String[] args) {//给定义一个字符串String str = "18-24" ;//利用分割功能String[] strArray = str.split("-") ;//分割str,将分割后的内容存入字符串数组strArray中//要将String[]数组的字符串数据转换成int类型的数据:int start = Integer.parseInt(strArray[0]) ;int end  = Integer.parseInt(strArray[1]) ;//键盘录入一个年龄Scanner sc = new Scanner(System.in) ;//接收System.out.println("请输入搜索的年龄:");int age =sc.nextInt() ;if(age >=start && age<=end) {System.out.println("是我们要找的人...");}else {System.out.println("不是我们要找的...");}}
}

关于分割功能的用法

代码示例

package org.westos;import java.util.Scanner;public class RegexDemo {public static void main(String[] args) {String s1 = "aa,bb,cc";String[] str = s1.split(",");for (int x = 0; x < str.length; x++) {System.out.println(str[x]);}System.out.println("----------------------------");String s2 = "aa.bb.cc";String[] str2 = s2.split("\\.");for (int x = 0; x < str2.length; x++) {System.out.println(str2[x]);}System.out.println("----------------------------");String s3 = "aabb                                      cc";String[] str3 = s3.split(" *");for (int x = 0; x < str3.length; x++) {System.out.println(str3[x]);}System.out.println("----------------------------");// 硬盘上的路径的形式String s4 = "E:\\JavaSE\\Code\\day11";String[] str4 = s4.split("\\\\");for (int x = 0; x < str4.length; x++) {System.out.println(str4[x]);}}
}

需求:我有如下一个字符串:"91 27 46 38 50"
   请写代码实现最终输出结果是:"27 38 46 50 91" 
   
  分析:
    1)定义这样一个字符串
    2)将字符串进行分割,返回字符串数组
    3)将字符串数组变成int类型的数组
   4)将int类型数组中的元素拼成字符串类型
    5)输出即可

代码示例

package org.westos;import java.util.Arrays;
import java.util.Scanner;public class RegexDemo {public static void main(String[] args) {// 定义一个字符串:String s = "91 27 46 38 50";// 将字符串进行分割,返回一个字符串数组String[] strArray = s.split(" ");// 将字符串数组变成int类型数组int[] arr = new int[strArray.length];// 遍历arr数组for (int x = 0; x < arr.length; x++) {arr[x] = Integer.parseInt(strArray[x]);}// 排序:直接用Arrays工具类Arrays.sort(arr);// 创建一个字符串缓冲区:StringBuilder 用来存储数组中的元素,在数组元素之间追加空格StringBuilder sb = new StringBuilder();// 遍历int类型数组for (int x = 0; x < arr.length; x++) {sb.append(arr[x]).append(" ");}// 还需将StringBulider转换字符串String result = sb.toString().trim(); // trim()用来消除两边的空格System.out.println("result:" + result);}
}

Java基础系列五之API相关推荐

  1. Java基础系列五 面向对象程序设计

    Java基础系列第一章 初识Java语言 Java基础系列第二章 Java语言基础 Java基础系列第三章 Java流程控制 Java基础系列第四章 Java数组与字符串 Java基础系列第五章 面向 ...

  2. Java基础系列24-常用api之String类

    文章目录 一.String类概述 二.String类案例 2.1 String类4种常用构造方法 2.2 String类创建对象两种方式 2.3 String类练习之模拟用户登录 2.4 String ...

  3. Java基础系列28-常用api之包装类

    文章目录 一.包装类概述 二.Integer类 三. int <=> String 相互转换 四. Integer练习之把字符串中的数据排序 参考: 一.包装类概述 基本数据类型包装类最常 ...

  4. java基础系列十七(时间日期转换)

    目录 一.概述 二.基础知识 2.1 时区 2.2 格林威治时间 2.3 时间戳 三.Date/Calendar/SimpleDateFormat 3.1 Date 3.2 Calendar 3.3 ...

  5. 夯实Java基础系列22:一文读懂Java序列化和反序列化

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  6. Java基础系列【导读】

    Java基础系列导读 Java基础 JaveWEB Java基础 基础系列[一]-- Java语言介绍 基础系列[二]-- 环境搭建 基础系列[三]-- Java基础语法 基础系列[四]-- 面向对象 ...

  7. 夯实Java基础系列14:深入理解Java枚举类

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  8. 夯实Java基础系列19:一文搞懂Java集合类框架,以及常见面试题

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  9. 夯实Java基础系列17:一文搞懂Java多线程使用方式、实现原理以及常见面试题

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

最新文章

  1. centos下LAMP之源码编译安装httpd
  2. Transformer全靠数据堆?那没有数据怎么办?LUT告诉你「冇问题」|AAAI 2021
  3. 华为全新发布开源操作系统欧拉:覆盖数字基础设施全场景
  4. 8-14-Exercise
  5. UVa 10905 孩子们的游戏
  6. 简单聊一下makefile中的 =, :=, ?=和+=
  7. 【Python】猜数小游戏
  8. java supplier_现代化的 Java (二十一)——宏和生成宏
  9. redis的数据持久化方案
  10. linux去掉空行的几种方法
  11. 鸿蒙升级最佳时间,鸿蒙升级时间确定,17款华为优先,荣耀或成遗珠!
  12. CUDA编程之CMAKE
  13. 微信支付v2升级v3注意事项
  14. SpringBoot整合JavaMail---发送邮件
  15. PEP 635 – Structural Pattern Matching: Motivation and Rationale
  16. Latex 1: 解决latex中遇到一个常见错误:Improper alphabetic constant.
  17. xss靶场练习之xss.haozi.me解析及答案
  18. Apereo CAS 5.0.X 默认提供的数据库认证的四种方式
  19. Python工程师是做什么的?如何学习Python
  20. echarts拓扑图一些功能实现

热门文章

  1. 【微信小程序开发全流程】篇章0:基于JavaScript开发的校园综合类微信小程序的概览
  2. RDLC报表系列(一) 简单的动态数据绑定和配置
  3. pthread_create回调函数返回值
  4. UI设计师都有哪些工作 网页设计规范包括什么
  5. 【音视频第7天】mediasoup拥塞控制【未完待续】
  6. 极客时间 - (应用层) HTTP2.0/QUIC 学习笔记
  7. RocketMQ常用命令使用示例及说明
  8. python列表导出excel_python list格式数据excel导出方法
  9. Microelectronic Systems
  10. 常见vue、js,webpack面试题