常有API
1.Arrays,冒泡
冒泡排序:有手就行
package arrays;
public class ArraysDemo {
public static void main(String[] args) {
int[] arr = {24,69,80,57,13};
System.out.println("排序前:"+ arrayToString(arr));//排序前:[24,69,80,57,13]
//排序
int k ;
for(int i =0;i<arr.length-1;i++){
for(int j =0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
k = arr[j+1];
arr[j+1] = arr[j];
arr[j] = k;
}
}
}
/* for(int i = 0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}*/
System.out.println("排序后:"+ arrayToString(arr));//排序后:[13,24,57,69,80]
}
//输出函数
public static String arrayToString(int[] arr){
StringBuilder sb = new StringBuilder();
sb.append("[");
for(int i =0;i<arr.length;i++){
if(i==arr.length-1){
sb.append(arr[i]);
}else{
sb.append(arr[i]).append(",");
}
}
sb.append("]");
return sb.toString();
}
}
2.Arrays类的概述和常用方法
操作数组的各种方法,属于工具类一般工具类
一般工具类的设计思想:
- 构造方法有public修饰
- 成员用public static修饰
package arrays;
import java.util.Arrays;
public class ArraysDemo {
public static void main(String[] args) {
int[] arr = {24, 69, 80, 57, 13};
System.out.println("排序前:" + Arrays.toString(arr));//排序前:[24, 69, 80, 57, 13]
Arrays.sort(arr);
System.out.println("排序后:" + Arrays.toString(arr));//排序后:[13, 24, 57, 69, 80]
}
}
3.基本类型包装类
概述:将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能和方法操作数据
常用的操作之一:用于基本类型数据与字符串之间的转换
3.1 Integer类的概述和使用
Integer:包装一个对象中的原始类型int的值
3.2 int和string的相互转换
常用的操作之一:用于基本类型数据与字符串之间的转换
-
int 转 string :
public static String valueof( int i ):返回int参数的字符串表示形式。该方法是String类中的方法 -
String转换为int
public static int parseInt(String s):将字符串解析为int类型,该方法时Integer类中的方法
package arrays;
//int 和 string的相互转换
public class ArraysDemo {
public static void main(String[] args) {
//int-----Stirng
//方式一
int number = 100;
String s1 = ""+number;
System.out.println(s1);
//方式二
//public static String valueof(int i )
String s2 = String.valueOf(number);
System.out.println(s2);
System.out.println();
//string-----int
//String-----Integer-----int
String s ="100";
//方式一
//public int intValue();
Integer i = Integer.valueOf(s);
int x = i.intValue();
System.out.println(x);
//方式二
int y = Integer.parseInt(s);
System.out.println(y);
}
}
案例:字符串中数据排序
package arrays;
import java.util.Arrays;
//字符串数据排序
public class ArraysDemo {
public static void main(String[] args) {
//定义一个字符串
String s = "91 27 46 38 50";
//分割,放入strArray字符串数组中
String[] strArray = s.split(" ");
//String转换int,得到int数组
int[] arr = new int[strArray.length];
for (int i = 0; i < strArray.length; i++) {
arr[i] = Integer.parseInt(strArray[i]);
}
//int数组排序
Arrays.sort(arr);
//用StringBuilder拼接,转成字符串
StringBuilder sb = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
if (i == args.length - 1) {
sb.append(arr[i]);
} else {
sb.append(arr[i]).append(" ");
}
}
String s1 = sb.toString();
System.out.println(s1);//27 38 46 50 91
}
}
3.3自动装箱和拆箱
装箱:把基本数据类型转换为对应的包装类类型
拆箱:把包装类类型转换为对应的基本数据类型
package arrays;
/*(自动)拆箱和(自动)装箱*/
public class ArraysDemo {
public static void main(String[] args) {
Integer i = Integer.valueOf(100);//手动装箱
Integer ii = 100;//自动装箱,隐藏了Integer.valueOf(100)
Integer iii = 200;
ii = ii.intValue() + 200;//手动拆箱
iii = iii + 200;//自动拆箱
Integer iiii = null;
if (iiii != null) {
iiii += 100; //如果不判断null,报错
}
}
}
推荐:只要是对象,在使用前就必须判断非null
4. 日期类
4.4.1Date类
4.4.2 SimpleDateFormat类
是一个具体的类,用于以区域设置敏感的方式格式化和解析日期
常用:
- y 年
- M 月
- d 日
- H 时
- m 分
- s 秒
构造方法
package arrays;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*SimpleDateFormat*/
public class ArraysDemo {
public static void main(String[] args) throws ParseException {
//格式化 Date -- String
Date d =new Date();
System.out.println(d);//Tue Mar 08 15:36:20 CST 2022 自动被重写了
SimpleDateFormat sdf1 = new SimpleDateFormat();
String s1 =sdf1.format(d);
System.out.println(s1);//22-3-8 下午3:37
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String s2 = sdf2.format(d);
System.out.println(s2);//2022年15月08日 15:41:54
System.out.println("-------------");
//解析 String---Date
String s3 = "1949-10-1 12:00:00";
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//一一对应
Date dd = sdf3.parse(s3);//抛异常
System.out.println(dd);
}
}
案例:日期工具类
package arrays;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateUtils {
private DateUtils(){} ;
public static String dateToString(Date d , String format){
SimpleDateFormat sdf = new SimpleDateFormat(format);
String s = sdf.format(d);
return s;
}
public static Date stringToDate(String s , String format) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat(format);
Date d = sdf.parse(s);
return d;
}
}
package arrays;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateDemo {
public static void main(String[] args) throws ParseException {
//创建对象
Date d = new Date();
String s = DateUtils.dateToString(d,"yyyy-MM-dd HH:mm:ss");
System.out.println(s);//2022-03-08 16:05:41
String ss = "1949-10-1 12:10:59";
Date dd = DateUtils.stringToDate(ss,"yyyy-MM-dd HH:mm:ss");
System.out.println(dd);//Sat Oct 01 12:10:59 CST 1949
}
}
4.4.3 Calendar类
Calendar为某一时刻和日历字段之间的转换提供了一些方法,并为操作字段提供了一些方法
package arrays;
import java.util.Calendar;
public class CalendarDemo {
public static void main(String[] args) {
//获取对象
Calendar c = Calendar.getInstance();//多态的形式
//public int get (int field)
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH) + 1; //月份从0开始
int day = c.get(Calendar.DATE);
System.out.println(year + "年" + month + "月" + day + "日");
}
}
常用方法
package arrays;
import java.util.Calendar;
public class CalendarDemo {
public static void main(String[] args) {
//获取对象
Calendar c = Calendar.getInstance();//多态的形式
//public int get (int field)
// 三年前的昨天
c.add(Calendar.YEAR,-3);
c.add(Calendar.DATE,-1);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH) + 1; //月份从0开始
int day = c.get(Calendar.DATE);
System.out.println(year + "年" + month + "月" + day + "日");//2019年3月8日
//public abstract void add(int field,int amount)
}
}
package arrays;
import java.util.Calendar;
public class CalendarDemo {
public static void main(String[] args) {
//获取对象
Calendar c = Calendar.getInstance();//多态的形式
//设置时间
c.set(2200,11,12);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH) + 1;
int day = c.get(Calendar.DATE);
System.out.println(year + "年" + month + "月" + day + "日");//
}
}
案例:二月天
package arrays;
import java.util.Calendar;
import java.util.Scanner;
public class CalendarDemo {
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前一天
int date = c.get(Calendar.DATE);
System.out.println(year + "年的二月有" + date + "天");
}
}
异常(感觉没啥用)
1.概述
2.异常处理方案
- try…catch…
Throwable
`package arrays;
public class ExceptionDemo {
public static void main(String[] args) {
System.out.println(“开始”);
method();
System.out.println(“结束”);
}
public static void method() {
try {
int[] arr = {1, 2, 3};
System.out.println(arr[3]);//new ArrayIndexOutOfBoundsException
} catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace();//控制台输出错误信息
}
}`
.编译异常和运行时异常区别
- 受检异常和非受检异常
- 编译异常:必须显示处理,否则报错无法通过编译
- 运行时异常:无需显示处理,可以和编译时异常一样处理
3. throws异常处理
格式:throws 异常名类; 跟在方法括号后面