日历类 是一个抽象类:java.util.Calendar
*
* 不能new ,所以提供了一个静态功能,返回值是当前类本身!
* public static Calendar getInstance() :通过底层它的子类创建该类实例 (常用的功能)
*
* public int get(int field):获取相关的日历信息:参数为相关的日历字段
* public static final int YEAR:年份
* public static final int MONTH:月份(1月份从角标0开始,0-11)
* public static final int DATE:月中的某一天
成员方法:
* public abstract void add(int field,int amount): 为某个字段添加或者减去时间量
public class CalendarDemo {
public static void main(String[] args) {
//创建日历类
Calendar calendar = Calendar.getInstance(); //就是子类的属性信息
// System.out.println(calendar);
//获取当前年月日信息:
//通过Calendar的字段(成员变量)
/**
* public static final int YEAR:年份
* public static final int MONTH:月份(1月份从角标0开始,0-11)
* public static final int DATE:月中的某一天
*/
int year = calendar.get(Calendar.YEAR) ;
int month = calendar.get(Calendar.MONTH) ;
int date = calendar.get(Calendar.DATE) ;
System.out.println("当前日期是:"+year+"-"+(month+1)+"-"+date);
}
}
存储5个学生,每个学生都有姓名和年龄,需要将5个学生存储到集合中,遍历学生信息
1)创建集合对象:Collection
* 2)创建5个学生
* 3)将5个学生添加到集合中
* 4)将集合转换成对象数组: Object[] toArray():将集合转换成数组
* 5)遍历Object[]数组即可
public class CollectionTest {
public static void main(String[] args) {
//创建集合对象
Collection c = new ArrayList() ;
//创建5个学生
Student s1 = new Student("关于",30) ;
Student s2 = new Student("蒋干",25) ;
Student s3 = new Student("刘备",35) ;
Student s4 = new Student("张飞",28) ;
Student s5 = new Student("诸葛亮",45) ;
//给集合中添加元素
c.add(s1) ;
c.add(s2) ;
c.add(s3) ;
c.add(s4) ;
c.add(s5) ;
// System.out.println(c);
//将集合转换成Object[]
Object[] objs = c.toArray(); //Object[] : Object obj = new Student() ;
for(int x = 0 ; x < objs.length ; x++){
// System.out.println(objs[x]);//执行是Student 的toString():直接输出对象名称
//现在需要执行Student中的getXXX()获取信息
//向下转型
Student student = (Student) objs[x];
System.out.println(student.getName()+"---"+student.getAge());
}
}
}
集合和数组的区别?
*
* 1)长度的区别
* 集合:支持可变的长度
* 数组:长度是固定的
*
* 2)存储数据类型的区别
* 集合:只能存储引用数据类型
* 数组:既可以存基本数据类型,也可以存储引用数据类型;
* 3)存储元素的区别
* 集合:集合中存储的元素:可以是任意引用类型元素
* 举例:
* 白酒参着啤酒红酒可乐
* 数组:存储的元素:只能是同一个类型元素!
* 举例: 水杯中的水
*
*
* Collection集合:接口
* 一些集合可以允许元素重复(List),一些集合不允许元素重复(Set)
* 一些集合可以允许元素有序(存储和取出一致:List),一些集合无序的(存储和取出不一致:Set)
* JDK不提供此接口的任何直接实现,通过具体的子接口的子实现类实现!
*
* 基本功能:
* 添加元素
* boolean add(Object e)
* 删除元素
* void clear():暴力删除,全部清空
* boolean remove(Object o):删除指定的元素
* 判断功能
* 判断集合中是否包含元素
* boolean contains(Object o):判斷集合是否包含指定的元素
* boolean isEmpty():判断集合是否为空
*
* 获取集合的元素数:
* int size()
*
* 转换功能:
* Object[] toArray():将集合转换成数组
public class CollectionDemo {
public static void main(String[] args) {
//创建一个集合Collection对象
//Collection collections = new Collection() ;接口不能实例化
Collection collection = new ArrayList() ;
System.out.println(collection);
//添加元素
//boolean add(Object e)
collection.add("hello") ;
collection.add("world") ;
collection.add("javaEE") ;
/*
* public boolean add(E e) {
ensureCapacityInternal(size + 1); // Increments modCount!!
elementData[size++] = e;
return true; //只要添加,永远返回true
}
* */
System.out.println(collection);
System.out.println("-------------------------");
//删除
System.out.println(collection.remove("javaEE")) ;
System.out.println(collection);
// collection.clear();//暴力删除
System.out.println(collection);
// boolean contains(Object o):判斷集合是否包含指定的元素
System.out.println(collection.contains("hello"));
System.out.println(collection.contains("android"));
// int size()
System.out.println(collection.size());
System.out.println(collection.isEmpty());
}
}
日期和String文本的相互转换的工具类
public class DateUtils {
//构造方法私有化
private DateUtils(){}
//提供静态功能
//将Date--->String 格式化
public static String date2String(Date date,String pattern){
//创建SimpleDateFormat对象
/*SimpleDateFormat sdf = new SimpleDateFormat(pattern) ;
String source = sdf.format(date);
return source ;*/
return new SimpleDateFormat(pattern).format(date) ;
}
//将String--->Date日期格式
public static Date string2Date(String source,String pattern) throws ParseException {
//分步走
/*SimpleDateFormat sdf = new SimpleDateFormat(pattern) ;
Date date = sdf.parse(source);
return date ;*/
return new SimpleDateFormat(pattern).parse(source) ;
}
}
成员方法:
* public long getTime() ;获取时间毫秒数(返回值来自:1970年1月1日)
*
*
* 开发中:
* "2021-5-20"
* 注册表单上---输入了 日期时间 ------ > 提交后台: Date格式
*
*
* Date date = new Date() ; 获取当前系统时间:Date日期格式
*
*Thu May 20 10:52:29 CST 2021 :Date日期格式 --------------------->String 日期文本格式 "2021-5-20" (格式化操作)
* DateFormat 是日期/时间格式化子类的抽象类, 不能直接new
* 使用最具体的子类:SimpleDateFormat 日期 -> 文本 :格式化
* 文本-> 日期 :解析
*
*
* SimpleDateFormat如何使用
* 构造方法:
* public SimpleDateFormat(String pattern)
* yyyy:表示年
* MM:月
* dd:月中的日期
* HH:时
* mm:分钟
* ss:秒
* public String format(Date date) :格式化
* public Date parse(String source) throws ParseException{}
public class DateDemo2 {
public static void main(String[] args) throws ParseException {
//Date日期格式----->文本:String :格式化
Date date = new Date() ;
System.out.println(date); //Thu May 20 11:01:39 CST 2021
//描述 "2021-5-20"
// public SimpleDateFormat(String pattern)
//创建SimpleDateFormat对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd") ;
//public String format(Date date) :格式化
String strDate = sdf.format(date);
System.out.println(strDate);
System.out.println("-----------------------------------------");
//String文本日期格式---->Date日期格式 : 解析过程
//public SimpleDateFormat(String pattern)
//注意:SimpleDateFormat的模式必须和String当前日期文本的格式一致
String source = "2022-5-20" ;
//创建SimpleDateFormart对象
// SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日") ;
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd") ;
// public Date parse(String source) throws ParseException{}
Date date2 = sdf2.parse(source) ;
System.out.println(date2);
//执行一段程序:计算执行效率!
/* long start = System.currentTimeMillis() ;
for(int x = 0; x < 1000000; x++){
System.out.println("hello"+x);
}
long end = System.currentTimeMillis() ;*/
// System.out.println("耗时:"+(end-start)+"毫秒");
/* Date date = new Date() ;
long time = date.getTime();
System.out.println(time);//1621478840499
Date date2 = new Date(time) ;
System.out.println(date2);*/
}
}
java.util.Date类 :表示特定的瞬间,精确到毫秒
*
* 构造方法:
* public Date():表示当前系统分配的系统时间(精确到毫秒)
* public Date(long date):将long----Date日期格式
* 与1970年1月1日 0:0:0 GMT(格林威治时间)
*
* 第一个构造方法---获取当前系统时间!
public class DateDemo {
public static void main(String[] args) {
//创建一个Date类对象
Date date = new Date() ;
System.out.println(date);//Date格式
System.out.println("--------------------------");
//Thu May 20 10:41:45 CST 2021
//定义时间long
long time = 60 * 60 ;
//public Date(long date):
Date date2 = new Date(time) ;
System.out.println(date2);
}
}
键盘录入一个字符串,判断这个字符串是否为对称字符串 (使用功能完成)
public class Test {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in) ;
//提示并录入
System.out.println("请输入个字符串:");
String line = sc.nextLine() ;
boolean flag = compareEq(line);
System.out.println("flag:"+flag);
System.out.println("----------------------------");
boolean flag2 = compareEq2(line);
System.out.println(flag2);
}
//方式2:利用StringBuffer的反转功能
public static boolean compareEq2(String s){
//创建一个字符串缓冲区对象
/* StringBuffer sb = new StringBuffer(s) ;
sb.reverse() ;//反转
//使用sb转换成字符串
String str = sb.toString();
boolean flag = str.equals(s);
return flag ;*/
//一步走
return new StringBuffer(s).reverse().toString().equals(s) ;
}
//方式1:定义一个功能
public static boolean compareEq(String s){
//遍历字符串
for(int x = 0 ; x < s.length() ; x ++){
//判断
//s.charAt(0) - s.charAt(s.length()-1)
if(s.charAt(x) != s.charAt(s.length()-1-x)){
return false ;
}
}
return true ;
}
}
int类型和String类型的相互转换
int--->String
* Integer.toString(int值)--->String
*
* String---->int
*
* Integer.parseInt(数字字符串)---->int
public class IntegerDemo {
public static void main(String[] args) {
//int---->String
//定义一个int类型变量
//方式1:空串拼接(最简单的)
int a = 100 ;
String s = "" ;
String result = s + a ;
System.out.println("result:"+result);
System.out.println("-----------------------------");
//方式2:包装为Integer----->String
Integer i = new Integer(a) ;
//String toString()
String result2 = i.toString();
System.out.println(result2);
System.out.println("-----------------------------");
//直接使用Integer类的静态功能
//public static String toString(int i)
String result3 = Integer.toString(a);
System.out.println(result3);
System.out.println("-------------------------------------");
//将String--->int: String必须为数字字符串
String str = "200" ;
//方式1:使用Integer的构造方法
Integer ii = new Integer(str) ;
//Integer--->int
//public int intValue()
int number = ii.intValue();
System.out.println(number);
System.out.println("-------------------------------------");
//方式2: String---Integer----int
//public static Integer valueOf(String s)
Integer ii2 = Integer.valueOf(str);
int number2 = ii2.intValue();
System.out.println(number2);
//常用:方式3 经常使用
//public static int parseInt(String s)
int number3 = Integer.parseInt(str);
System.out.println(number3);
}
}
Math类:abs求绝对值
Jdk5新特性:静态导入:导入到方法的级别,前提条件是方法必须静态
*
* 注意:自定义的方法名不能和被导入的静态方法名冲突,否则报错!
import static java.lang.Math.abs ;
public class MathDemo {
public static void main(String[] args) {
int max = Math.max(10, 20);
System.out.println(max);
// int num = Math.abs(-100);
// System.out.println(num);
int number = java.lang.Math.abs(-100); //区分abs方法
System.out.println(number);
}
public static void abs(){
}
}
java.util.Random:随机数生成器
*
* 构造方法
* Random()
* 创建一个新的随机数生成器。
* 空参构造:通过这个构造:调用nextInt(): 获取int类型的范围内的随机数
* 调用nextInt(int n):0-n之间随机数
*
* 每一次产生的随机不相同!
* Random(long seed):
* 创建一个随机数生成器: 传递seed(初始种子)
* 调用nextInt(): 获取int类型的范围内的随机数
* * 调用nextInt(int n):0-n之间随机数
*
* 产生随机相同
public class RandomDemo {
public static void main(String[] args) {
//创建一个随机数生成器对象
//有参构造
// Random random = new Random(1111) ;
//无参构造:每次产生随机不相同
Random random = new Random() ;
//10个数
for(int x = 0 ;x < 10 ; x ++){
// int number = random.nextInt(); //获取int类型范围内的随机数
int number = random.nextInt(30) +1; //0-n之间随机数:不包括n
System.out.println(number);
}
}
}
public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
* 复制数组操作:
* 参数1:原数组,
* 参数2:从原数组的某个位置开始
* 参数3:目标数组
* 参数4:目标数组的目标位置
* 参数5:复制的长度*/
public class SystemDemo2 {
public static void main(String[] args) {
//从arr1中复制一部分元素到arr2中
//有两个数组,静态初始化
int[] arr1 = {11,22,33,44,55} ;
int[] arr2 = {1,2,3,4,5,6,7,8,9} ;
System.out.println("复制之前:");
//Arrays的toString(数组)
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr2));
System.out.println("-------------------------------");
System.arraycopy(arr1,2,arr2,4,3);
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr2));
}
}
/*
*
* Arrays的toString方法源码:
* public static String toString(int[] a) {
if (a == null)
return "null";
int iMax = a.length - 1; //最大索引值 :arr1.length-1
if (iMax == -1)
return "[]";
StringBuilder b = new StringBuilder(); //单线程程序中使用StringBuilder
b.append('['); //"["
for (int i = 0; ; i++) { //遍历arr1数组
b.append(a[i]); // 将所有元素追加进来
if (i == iMax) //当前角标取到 最大索引值
return b.append(']').toString(); //追加"]" 转换String
b.append(", "); //如果没有取到最大索引值,中间的元素 追加", "
}
}
* */