JAVA笔记10__Math类、Random类、Arrays类/日期操作类/对象比较器/对象的克隆/二叉树
/**
* Math类、Random类、Arrays类:具体查JAVA手册。。。。。。
*/
public class Main {
public static void main(String[] args) {
String[] s1 = {"a","b","c","d","e"};
String[] s2 = {"a","b","c","d","e"};
boolean b = Arrays.equals(s1,s2); //比较两数组内容
System.out.println(b); //输出true String[] s3 = new String[6];
Arrays.fill(s3,"井空");
System.out.println(s3.length);
for(String i:s3) System.out.print(i+" "); System.out.println(); String[] s4 = Arrays.copyOfRange(s1, 2, 3); //[2,3)
for(String i:s4) System.out.print(i+" "); System.out.println(); int index = Arrays.binarySearch(s1, "c");
System.out.println(index);
}
}
/**
* 日期操作类
* Date类:表示特定的瞬间,精确到毫秒,也是程序运行时的当前时间
* Calendar类:可以精确到毫秒
* DateFormat类
* SimpleDateFormat类:日期格式化类
*/
public class Main {
public static void main(String[] args) {
Date d1 = new Date();
Date c = new Date();
System.out.println(d1.getTime()); //毫秒表示
System.out.println(d1); //格式表示 //两种实例化方式
Calendar ca1 = Calendar.getInstance();
Calendar ca2 = new GregorianCalendar(); //阳历
int year = ca1.get(Calendar.YEAR);
int month = ca1.get(Calendar.MONTH)+1;
int day = ca1.get(Calendar.DAY_OF_MONTH);
int hour = ca1.get(Calendar.HOUR);
int minute = ca1.get(Calendar.MINUTE);
int second = ca1.get(Calendar.SECOND);
System.out.println(year+" "+month+" "+day);
System.out.println(hour+" "+minute+" "+second); DateFormat df1 = DateFormat.getDateInstance();
DateFormat df2 = DateFormat.getTimeInstance();
String nowDate = df1.format(new Date());
String nowTime = df2.format(new Date());
System.out.println(nowDate);
System.out.println(nowTime); SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy^MM^dd HH:mm:ss SSS毫秒");
String swa = sdf1.format(new Date());
System.out.println(swa);
}
}
/**
* 对象比较器:对两个或多个数据项进行比较,以确定它们是否相等,或确定它们之间的大小关系
* Comparable接口:强行对实现它的每个类的对象进行整体排序,类的compareTo方法被称为它的自然比较方法
* 如果自定义类的对象要实现排序,那么就要实现Comparable接口,并实现接口的CompareTo方法
*
* Comparable接口要求自定义类去实现,按照OO原则:对修改关闭,对扩展开放。
* 如果这个类已经定义好,不想再去修改它,如何实现? 答:Arrays.sort有一个重载方法:
*/
public class Main {
public static void main(String[] args) {
String[] names = {"a","b","c","d","e","f"};
Person[] persons = {
new Person("a",10), new Person("b",9),
new Person("c",8), new Person("d",7),
new Person("e",6), new Person("f",5),
};
//自定义类对对象数组排序
Arrays.sort(persons);
for(Person i:persons) System.out.println(i.name+" "+i.age); Person2[] persons2 = {
new Person2("a",10), new Person2("b",9),
new Person2("c",8), new Person2("d",7),
new Person2("e",6), new Person2("f",5),
};
Arrays.sort(persons2,new Person2Comparator()); //使用自定义的比较器
for(Person2 i:persons2) System.out.println(i.name+" "+i.age);
System.out.println(Arrays.toString(persons2));//返回数组内容的字符串表示形式
}
} class Person implements Comparable<Person>{
public String name;
public int age;
Person(String name,int age){
this.name = name;
this.age = age;
}
@Override
public int compareTo(Person o) { //比较器的比较方法
//实现:定义对象之间的比较规则
if(o==null){
throw new NullPointerException();
}
//如果当前对象小于参数对象,返回-1
//如果当前对象等于参数对象,返回0
//如果当前对象大于参数对象,返回1
if(this.age < o.age)
return -1;
else if(this.age < o.age)
return 1;
return 0;
}
} class Person2{
public String name;
public int age;
Person2(String name,int age){
this.name = name;
this.age = age;
}
}
class Person2Comparator implements Comparator<Person2>{
@Override
public int compare(Person2 o1, Person2 o2) {
if(o1==null || o2==null)
throw new NullPointerException();
if(o1.age < o2.age)
return -1;
else if(o1.age > o2.age)
return 1;
return 0;
}
}
/**
* 对象的克隆:将一个对象复制一份(克隆要比new效率高)
* 一个类要想实现克隆功能,必须:
* 1.实现Cloneable接口,该接口必须是一个标记接口
* 2.重写Obejct类中的Clone方法
*/
public class Main {
public static void main(String[] args) {
Cat c1 = new Cat("a",10);
System.out.println("c1="+c1);
try{
Cat c2 = (Cat)c1.clone();
System.out.println("c2="+c2);
}catch(CloneNotSupportedException e){
e.printStackTrace();
}
}
} class Cat implements Cloneable{
private String name;
private int age; public Cat(String name, int age) {
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;
}
@Override
public String toString() {
return "Cat{" + "name=" + name + ", age=" + age + '}';
}
@Override
//重写Obejct的Clone方法
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
/**
* 二叉树
*/
public class Main {
public static void main(String[] args) {
BinaryTree t1 = new BinaryTree();
t1.add(8);
t1.add(9);
t1.add(3);
t1.add(4);
t1.print();
}
} class BinaryTree{
private Node root; public void add(int data){
if(root==null){
root = new Node(data);
}else{
root.addNode(data);
}
}
public void print(){
if(root!=null){
root.printNode();
}else{
System.out.println("NULL");
}
} class Node{
private int data;
private Node left;
private Node right;
public Node(int data){
this.data = data;
}
public void addNode(int data){
if(data <= this.data){
if(this.left==null){
this.left = new Node(data);
}else{
this.left.addNode(data);
}
}else{
if(this.right==null){
this.right = new Node(data);
}else{
this.right.addNode(data);
}
}
}
public void printNode(){
System.out.println(this.data);
if(this.left!=null)
this.left.printNode();
if(this.right!=null)
this.right.printNode();
}
}
}
JAVA笔记10__Math类、Random类、Arrays类/日期操作类/对象比较器/对象的克隆/二叉树的更多相关文章
- 菜鸡的Java笔记 日期操作类
日期操作类 Date 类与 long 数据类型的转换 SimpleDateFormat 类的使用 Calendar 类的使用 如 ...
- 使用日期操作类(Calendar)获得几秒、几分钟、几小时之前的时间
public String dealDate(String case_time){ // 日期操作类 Calendar calendar = Calendar.getInstance(); // 当前 ...
- Java笔记:与系统交互、系统相关的类,Object类
1.程序与用户交互 (1)运行一个Java程序的时候要给它提供一个main方法入口,这边分析一下这个main方法的签名public static void main(String[] args);pu ...
- java编程--04比较几个常用的日期时间相关类的区别
第一篇,介绍日期的比较 第二篇,介绍日期的格式化 第三篇,介绍关于日期常用的计算 第四篇,比较几个常用的日期时间相关类的区别 第五篇,jdk9对日期类进行了更新,写一些i自己的学习心得. 下面以一组思 ...
- 日期操作类--SimpleDateFormat类
使用SimpleDateFormat格式化日期 SimpleDateFormat是一个以语言环境敏感的方式来格式化和分析日期的类.SimpleDateFormat允许你选择任何用户自定义日期时间格式来 ...
- 日期操作类--DateFormat类
简单的DateFormat格式化编码 时间模式字符串用来指定时间格式.在此模式中,所有的ASCII字母被保留为模式字母,定义如下: 字母 描述 示例 G 纪元标记 AD y 四位年份 2001 M 月 ...
- 日期操作类--Date类
Date-API ava.util包提供了Date类来封装当前的日期和时间.Date类提供两个构造函数来实例化Date对象.第一个构造函数使用当前日期和时间来初始化对象. Date( ) 第二个构造函 ...
- Util应用程序框架公共操作类(十二):Lambda表达式公共操作类(三)
今天在开发一个简单查询时,发现我的Lambda操作类的GetValue方法无法正确获取枚举类型值,以至查询结果错误. 我增加了几个单元测试来捕获错误,代码如下. /// <summary> ...
- JavaLearning:日期操作类
package org.fun.classdemo; import java.util.Calendar; import java.util.GregorianCalendar; public cla ...
随机推荐
- WebView(网页视图)基本用法
资料来源于菜鸟教程 啊这官方文档居然失效了,打不开.那我们直接就看相关方法: WebChromeClient:辅助WebView处理Javascript的对话框.网站图标.网站title.加载进度等! ...
- CORS跨域请求规则以及在Spring中的实现
CORS: 通常情况下浏览器禁止AJAX从外部获取资源,因此就衍生了CORS这一标准体系,来实现跨域请求. CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origi ...
- 【redis前传】集思广益之quicklist,取其精华去其糟粕
前言 在之前我们已经学习了redis五大数据结构中的list结构.其内部是linkedList和zipList两种结构.这是我们已经学习的内容.之前我没有结合操作具体查看.事实上在两者中还存在一种结合 ...
- windows10 安装配置 jmeter 自动化接口测试 邮件报告
1.安装依赖包:JDK(版本:jdk-7u17-windows-x64) 双击即可安装,注意:jdk不要安装中文路径下,jdk和jre安装在同一路径下 1.1:配置jdk环境变量 (1)JAVA_HO ...
- AVS 端能力之音频播放模块
功能简介 音频播放 音频流播放 URL文件播放 播放控制 播放 暂停 继续 停止 其它功能(AVS服务器端实现) 支持播放列表 支持上一首下一首切换 支持电台 事件指令集 AudioPlayer 端能 ...
- P5644-[PKUWC2018]猎人杀【NTT,分治】
正题 题目链接:https://www.luogu.com.cn/problem/P5644 题目大意 \(n\)个人,每个人被选中的权重是\(a_i\).每次按照权重选择一个没有死掉的人杀死,求第\ ...
- .Net微服务实战之可观测性
系列文章 .Net微服务实战之技术选型篇 .Net微服务实战之技术架构分层篇 .Net微服务实战之DevOps篇 .Net微服务实战之负载均衡(上) .Net微服务实战之CI/CD .Net微服务实战 ...
- IOS开发之UIScrollView约束布局
概要 在iOS开发学习中,UIScrollView是绕不过去的一个重要控件. 但是相对于Android的ScrollView,iOS的这个滚动控件的用法简直是复杂一万倍... 最主要是目前能找到的大部 ...
- oracle dg failover灾难切换
oracle dg failover灾难切换SQL> alter database recover managed standby database finish force;SQL> a ...
- 题解 [APIO2013]道路费用
link Description 幸福国度可以用 N 个城镇(用 1 到 N 编号)构成的集合来描述,这些城镇 最开始由 M 条双向道路(用 1 到 M 编号)连接.城镇 1 是中央城镇.保证一个 人 ...