Java基础系列五之API
对象数组
定义:用来存储对象的数组
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相关推荐
- Java基础系列五 面向对象程序设计
Java基础系列第一章 初识Java语言 Java基础系列第二章 Java语言基础 Java基础系列第三章 Java流程控制 Java基础系列第四章 Java数组与字符串 Java基础系列第五章 面向 ...
- Java基础系列24-常用api之String类
文章目录 一.String类概述 二.String类案例 2.1 String类4种常用构造方法 2.2 String类创建对象两种方式 2.3 String类练习之模拟用户登录 2.4 String ...
- Java基础系列28-常用api之包装类
文章目录 一.包装类概述 二.Integer类 三. int <=> String 相互转换 四. Integer练习之把字符串中的数据排序 参考: 一.包装类概述 基本数据类型包装类最常 ...
- java基础系列十七(时间日期转换)
目录 一.概述 二.基础知识 2.1 时区 2.2 格林威治时间 2.3 时间戳 三.Date/Calendar/SimpleDateFormat 3.1 Date 3.2 Calendar 3.3 ...
- 夯实Java基础系列22:一文读懂Java序列化和反序列化
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
- Java基础系列【导读】
Java基础系列导读 Java基础 JaveWEB Java基础 基础系列[一]-- Java语言介绍 基础系列[二]-- 环境搭建 基础系列[三]-- Java基础语法 基础系列[四]-- 面向对象 ...
- 夯实Java基础系列14:深入理解Java枚举类
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
- 夯实Java基础系列19:一文搞懂Java集合类框架,以及常见面试题
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
- 夯实Java基础系列17:一文搞懂Java多线程使用方式、实现原理以及常见面试题
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
最新文章
- centos下LAMP之源码编译安装httpd
- Transformer全靠数据堆?那没有数据怎么办?LUT告诉你「冇问题」|AAAI 2021
- 华为全新发布开源操作系统欧拉:覆盖数字基础设施全场景
- 8-14-Exercise
- UVa 10905 孩子们的游戏
- 简单聊一下makefile中的 =, :=, ?=和+=
- 【Python】猜数小游戏
- java supplier_现代化的 Java (二十一)——宏和生成宏
- redis的数据持久化方案
- linux去掉空行的几种方法
- 鸿蒙升级最佳时间,鸿蒙升级时间确定,17款华为优先,荣耀或成遗珠!
- CUDA编程之CMAKE
- 微信支付v2升级v3注意事项
- SpringBoot整合JavaMail---发送邮件
- PEP 635 – Structural Pattern Matching: Motivation and Rationale
- Latex 1: 解决latex中遇到一个常见错误:Improper alphabetic constant.
- xss靶场练习之xss.haozi.me解析及答案
- Apereo CAS 5.0.X 默认提供的数据库认证的四种方式
- Python工程师是做什么的?如何学习Python
- echarts拓扑图一些功能实现
热门文章
- 【微信小程序开发全流程】篇章0:基于JavaScript开发的校园综合类微信小程序的概览
- RDLC报表系列(一) 简单的动态数据绑定和配置
- pthread_create回调函数返回值
- UI设计师都有哪些工作 网页设计规范包括什么
- 【音视频第7天】mediasoup拥塞控制【未完待续】
- 极客时间 - (应用层) HTTP2.0/QUIC 学习笔记
- RocketMQ常用命令使用示例及说明
- python列表导出excel_python list格式数据excel导出方法
- Microelectronic Systems
- 常见vue、js,webpack面试题