1. Math

Math

1.1 Math类概述

1.2 Math类的常用方法

返回绝对值:是正数是时候直接返回参数本身,是负值的时候返回的是参数的相反数。
参数是10时返回的是10,参数是-10的时候返回的是10。
Math类的三个方法比较: floor() ceil() round()

2. System

System

2.1 System类概述

2.2 System类的常用方法

currentTimeMillis计算时间

方法示例:
exit方法:

运行结果:
结果为只有一个开始没有结束,因为在中间Java虚拟机已经被终止了。

3. Object

Object

3.1 Object类的概述

3.2 Object的常用方法

equals方法中变量在前和在后的区别

3.2.1 toString

toString方法示例:

创建一个学生类对象:
有变量,构造方法,get,set方法。

测试类:
测试类中为name和age变量赋值,然后输出s,会输出什么那?

运行结果:
输出的是一串和变量没有任何关系的字符

那为什么会输出这样一段字符那?
接下来就要看System.out.println();中println的源码了。

如果我们在类中重写了toString方法就不会输出这样的一串字符了。
一般可以使用快捷键生成

3.2.2 equals

创建一个学生类:类中有变量和构造方法,get,set

测试类:
比较两个对象的内容是否相同

运行结果:
false可见()是实现不了不交两个对象的内容是否相同的
因为s1和s2都是new出来的,代表的是一个地址值,比较地址值是看不出内容是否相同的。

将()注释,使用equals方法比较

运行结果:
输出的还是false
为什么还是false?往下看equals的源码

归根到底还是用的(==)方法,所以也是行不通的。
所以想要判断内容对象的内容是否相同只能重写equals方法了。

在类中重写equals方法,直接快捷键生成即可,快捷键生成会生成两个方法,把hashCode方法删除即可。
然后再运行测试类:
确实变成了true,是为什么那?往下看

结果是true

4. Arrays

4.1 冒泡排序

将下面的身高由低到高排列,最后d会出现在最左边,b会出现在最右边。
第一次比较,a和b比较,大的往后排,所以这次不变。现在的位置还是a b c d e
第二次比较,b和c比较,大的往后排,将b和c调换位置。现在的位置是a c b d e
第三次比较,b和d比较,大的往后排,将b和d调换位置。现在的位置是a c d b e
第四次比较,b和e比较,大的往后排,将b和e调换位置。现在的位置是a c d e b
接下来的比较b就不会参与了,是a c d e四个比较,和上面的比较过程一样。

代码示例:

public class ArrayDemo {

    public static void main(String[] args) {
// 定义一组数组
int[] arr = { 12, 34, 63, 11 };
System.out.println("排序前" + arrayToString(arr)); // length-1是为了防止索引越界;
// 因为在比较相邻的两个数据时,第二个比较数据会是{i+1},
// 如果第二个比较的数据正好是最后一个数据时,
// 再{i+1}就会超出本来的索引。
for (int i = 0; i < arr.length - 1; i++) {
// 比较两个相邻的数据,如果第一个大于第二个就进入方法进行位置更替
if (arr[i] > arr[i + 1]) {
// 先将arr[i]中的数据赋值给temp
int temp = arr[i];
// 将arr[i+1]的值赋给arr[i]
arr[i] = arr[i + 1];
// 将temp,也就是原来的arr[i]的值赋给arr[i+1]
arr[i + 1] = temp;
}
}
System.out.println("第一次比较" + arrayToString(arr)); //因为每次比较都要少一个数据,所以这里每次都要多减一个
for (int i = 0; i < arr.length - 1 - 1; i++) {
if (arr[i] > arr[i + 1]) {
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
System.out.println("第二次比较" + arrayToString(arr)); for (int i = 0; i < arr.length - 1 - 2; i++) {
if (arr[i] > arr[i + 1]) {
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
System.out.println("第三次比较" + arrayToString(arr)); } /// 把数组中的元素按照指定的规则组成一个字符串: [元素1,元素2,...]
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) {// 因为arr.length判断的长度是从1开始的,但是计算机的长度是从0开始的,所以要-1
sb.append(arr[i]);
} else {
sb.append(arr[i] + ",");
}
}
sb.append("]");
// 将StringBuilder转化为String
String s = sb.toString();
return s;
}
}

运行结果:
第三次的结果就是我们想要的结果了,从小到大排列。
但是这样的写法太麻烦,还能继续优化一下,向下看。

优化后的代码:
未优化的代码做的事情就是比较n-1次,所以可以直接用for循环表示,在for循环中进行比较。

public class ArrayDemo {

    public static void main(String[] args) {
// 定义一组数组
int[] arr = { 12, 34, 63, 11 };
System.out.println("排序前" + arrayToString(arr)); //冒泡排序循环比较的次数是n-1,所以这里的循环次数也要-1
for (int i = 0; i < arr.length - 1; i++) {
//这里直接-i,就可以了,因为外面的循坏正好是从0开始一直到循环次数
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
System.out.println("排序后的:" + arrayToString(arr)); } /// 把数组中的元素按照指定的规则组成一个字符串: [元素1,元素2,...]
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) {// 因为arr.length判断的长度是从1开始的,但是计算机的长度是从0开始的,所以要-1
sb.append(arr[i]);
} else {
sb.append(arr[i] + ",");
}
}
sb.append("]");
// 将StringBuilder转化为String
String s = sb.toString();
return s;
}
}

4.2 Arrays类的概述和常用方法

Arrays类位于 java.util 包中,主要包含了操纵数组的各种方法

使用时导包:import java.util.Arrays
Arrays类的常用方法

代码示例:

运行结果:

5. 基本类型包装类

基本类型和包装类型的区别
Byte包装类
Integer 包装类

5.1 基本类型包装类概述

除了char和int,剩下的包装类都是基本数据类型首字母大写。

5.2 Integer类的概述和使用

过时的方法也可以使用,但是不推荐使用。

注意:根据String值创建Interger对象,String值只能是数字。

5.3 int和String的相互转换

代码示例:

运行结果:

5.3.1 案例:字符串中数据排序

public class StringSort {
public static void main(String[] args) {
String a = "91 27 46 38 50";
String b[] = a.split(" ");
int c[] = new int[b.length];
for (int i = 0; i < b.length; i++) {
c[i] = Integer.parseInt(b[i]);
}
Arrays.sort(c);
System.out.println(c);
System.out.println(Arrays.toString(c));
StringBuilder s = new StringBuilder();
for (int j = 0; j < c.length; j++) {
s.append(c[j]);
s.append(" ");
}
System.out.println(s);
}
}

输出结果:

[I@28d93b30
[27, 38, 46, 50, 91]
27 38 46 50 91

5.4 自动装箱和拆箱

代码示例:

装箱:
valueOf就是返回一个指定int值的Integet的实例,
Integer i = Integer.valueOf(100),
将100装箱成一个Integer实例

拆箱:
.intValue(),将包装类转换为基本数据类型就是拆箱。
将ii的值转为int类型的过程就是拆箱。

自动拆箱:

运行结果:
还是300

最后说个小问题:
如果Integer是null,装箱则会报错空指针异常,所以建议先判断一下判断是否Integet是否为空再决定是否执行。

6. 日期类

时间类

6.1 Date类概述和构造方法

Date

public class DateClass {
public static void main(String[] args) {
Date d = new Date();
System.out.println(d);//Tue Nov 24 21:15:59 CST 2020,当前日期时间 Date date = new Date(1606219237000L);
System.out.println(date);//Tue Nov 24 20:00:37 CST 2020
}
}

6.2 Date类的常用方法

public class DateClass {
public static void main(String[] args) {
Date d = new Date();
System.out.println(d);//Tue Nov 24 21:15:59 CST 2020,当前日期时间 Date date = new Date(1606219237000L);
System.out.println(date);//Tue Nov 24 20:00:37 CST 2020 long time = d.getTime();
System.out.println(time);//1606224564404 d.setTime(1606219237000L);
System.out.println(d);//Tue Nov 24 20:00:37 CST 2020
}
}

6.3 SimpleDateFormat类概述

6.4 SimpleDateFormat类的构造方法

6.5 SimpleDateFormat格式化和解析日期

代码示例:

格式化:
将Date类型格式成String类型

运行结果:
这是方法默认的日期格式,还可以自己定义日期格式,向下看。

定义日期格式:

运行结果:

还是不好看,继续优化:

运行结果:
这样就看着比较顺眼,具体想怎么改自己定义。

解析:
将String类型解析成Date类型
字符串的模式和自定义的模式一定要一致,否则会报解析异常。

6.6 Calendar类的概述

Calendar
Calendar:它为特定瞬间与一组诸如 YEAR(年)、MONTH(月)、DAY_OF_MONTH(日期)、HOUR(时) 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。

代码示例:
在使用Calendar获取月份的时候,要注意Calendar获取月份是从0开始的,所以要+1。

运行结果:

6.7 Calendar类的常用方法

get方法参考上面的代码示例
剩下的两个方法往下看

public class DateClass {
public static void main(String[] args) {
//当前时间是2021.4.16 23:51:48
Calendar c = Calendar.getInstance();
int cc = c.get(1);
System.out.println(cc);//年,2021
System.out.println(c.get(Calendar.YEAR));//2021
System.out.println(c.get(Calendar.MONTH)+1);//4,月份的下标从0开始
System.out.println(c.get(Calendar.DATE));//16日
System.out.println(c.get(Calendar.DAY_OF_MONTH));//16日
System.out.println(c.get(Calendar.HOUR));//11,12小时制
System.out.println(c.get(Calendar.HOUR_OF_DAY));//24小时制,23
System.out.println(c.get(Calendar.MINUTE));//51
System.out.println(c.get(Calendar.SECOND));//48 c.add(Calendar.YEAR,-2);
System.out.println(c.get(Calendar.YEAR));//2019 c.set(Calendar.YEAR, 2025);
System.out.println(c.get(Calendar.YEAR));//2025 c.set(2024, 04, 23);
System.out.println(c.get(Calendar.YEAR));//2024
System.out.println(c.get(Calendar.MONTH)+1);//5,月份的下标从0开始
System.out.println(c.get(Calendar.DAY_OF_MONTH));//23
}
}

代码示例:
add方法:通过add方法我们可以给年份,月,日期,加上或减去时间值。

当前时间

运行结果:
计算机年份是2048

需求:10年后的5天前
如果要增加年份或日期就不需要-号了,直接数字就可以了。

运行结果:

set方法:
set方法设置当前日历的年月日
月是从0开始的

运行结果:
Calendar的月是从0开始的,所以这里的12

6.8 案例:二月天

public class CalendarClass {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int year = sc.nextInt();
Calendar c = Calendar.getInstance();
c.set(year,2,1);//其实是3月1日
// c.add(Calendar.DAY_OF_MONTH,-1);
// System.out.println(c.get(Calendar.DAY_OF_MONTH));//这两种都可以
c.add(Calendar.DATE,-1);
System.out.println(c.get(Calendar.DATE));
}
}

Java基础00-常用API24的更多相关文章

  1. Java基础(00)

    Java发展史 Java之父:詹姆斯.高斯林(James Gosling). SUN(Stanford University Network 斯坦福大学网络公司)产物. 1995年5月23日,java ...

  2. Java基础和常用框架的面试题

    前言 最近学校也催着找工作了,于是刷了一些面试题,学习了几篇大佬优秀的博客,总结了一些自认为重要的知识点:听不少职场前辈说,对于应届毕业生,面试时只要能说到核心重要的点,围绕这个点说一些自己的看法,面 ...

  3. java基础之常用类1

    java基础 以下内容为本人的学习笔记,如需要转载,请声明原文链接   java常用类: 1.内部类 2.Object类 3.Object类常用方法 4.包装类 5.String类 6.BigDeci ...

  4. 【Java基础】常用类

    常用类 字符串相关的类 String类:代表字符串,使用一对 "" 引起来表示. public final class String implements java.io.Seri ...

  5. 黑马程序员——JAVA基础之常用DOS命令和环境变量的配置

    ------- android培训.java培训.期待与您交流! ----------   1.常用dos命令: dir   显示当前文件下目录                             ...

  6. Java基础总结--常用类以及包的访问权限

    -----Object---所有类的根类1.怎么得到的:通过对所有对象不断的向上抽取共性,具备所有对象的共性的东西2.常用的方法* equals(Object obj):比较两个对象的引用是否指向同一 ...

  7. java基础(15):常用API(Object、String、StringBuffer)

    1. Java的API及Object类 在以前的学习过程中,我们都在学习对象基本特征.对象的使用以及对象的关系.接下来我们开始使用对象做事情,那么在使用对象做事情之前,我们要学习一些API中提供的常用 ...

  8. Java基础之常用类

    1.Collections类: (1)此类完全由在 collection 上进行操作或返回 collection 的静态方法组成. (2)静态方法摘要: static <T> boolea ...

  9. java基础篇 -- 常用的日期加减和日期格式化工具类

    平时我们遇到日期的加减,感觉是相当麻烦的,以下是常用的日志加减的方法,包括日的加减.月的加减等,也包括了一些常用的日期格式化,这样在我们以后碰到日期加减的时候会省去很多麻烦,欢迎大神指正和吐槽: pa ...

随机推荐

  1. 将Tensor核心引入标准Fortran

    将Tensor核心引入标准Fortran 调优的数学库是从HPC系统提取最终性能的一种简单而可靠的方法.但是,对于寿命长的应用程序或需要在各种平台上运行的应用程序,为每个供应商或库版本调整库调用可能是 ...

  2. FCN与U-Net语义分割算法

    FCN与U-Net语义分割算法 图像语义分割(Semantic Segmentation)是图像处理和是机器视觉技术中关于图像理解的重要一环,也是 AI 领域中一个重要的分支.语义分割即是对图像中每一 ...

  3. 主成分分析法(PCA)原理和步骤

    主成分分析法(PCA)原理和步骤 主成分分析(Principal Component Analysis,PCA)是一种多变量统计方法,它是最常用的降维方法之一,通过正交变换将一组可能存在相关性的变量数 ...

  4. https://www.jianshu.com/writer#/notebooks/164311/notes/88906048/preview

    什么是 webassembly 在 2019 年 12 月之前,如果你要编写一个web页面,那一定离不开 html.css.js 这三个好兄弟.在 2019 年 12 月之后 W3C 宣布 webas ...

  5. JUC 并发编程--05, Volatile关键字特性: 可见性, 不保证原子性,禁止指令重排, 代码证明过程. CAS了解么 , ABA怎么解决, 手写自旋锁和死锁

    问: 了解volatile关键字么? 答: 他是java 的关键字, 保证可见性, 不保证原子性, 禁止指令重排 问: 你说的这三个特性, 能写代码证明么? 答: .... 问: 听说过 CAS么 他 ...

  6. 牛客网sql实战参考答案(mysql版):16-21

    16.统计出当前(titles.to_date='9999-01-01')各个title类型对应的员工当前(salaries.to_date='9999-01-01')薪水对应的平均工资.结果给出ti ...

  7. 题解-P3810

    P3810 [模板]三维偏序(陌上花开) 更好的阅读体验1 更好的阅读体验2 前置算法 树状数组求逆序对 归并排序求逆序对 解题之前,让我们来看一看弱化版本 \(\to\) 二维偏序 题意 给定两个长 ...

  8. CosId 通用、灵活、高性能的分布式 ID 生成器

    CosId 通用.灵活.高性能的分布式 ID 生成器 介绍 CosId 旨在提供通用.灵活.高性能的分布式系统 ID 生成器. 目前提供了俩大类 ID 生成器:SnowflakeId (单机 TPS ...

  9. npm i安装命令中的-g -D -S的区别

    -g为全局安装 -D 对模块进行局部安装,模块写入到 devDependencies 对象 用于开发阶段,开发时用到的工具等 -S 局部安装,不同的是模块写入到 dependencies对象 用于生产 ...

  10. BGP路由技术

    BGP路由技术 目录 一.BGP概述 1.1.自治系统 1.2.动态路由分类 1.3.BGP概念 1.4.BGP的特征 1.5.BGP工作原理 二.命令配置 2.1.BGP配置思路 2.2.命令 一. ...