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. windows 映射驱动器 图标显示不正常

    正常图标是这样的: 我的变成了这样: 解决方法: 注册表进入: HKEY_CURRENT_USER\SOFTWARE\Classes\Applications\Explorer.exe\Drives\ ...

  2. CMOS图像传感器理解

    CMOS图像传感器理解 水流方向从左边流向右边,上面有一个开关,拧下去的时候水流停止,拧上去的时候水流打开.左边是水流的源头我们给它起个名字,叫做源端(就是源头的意思嘛),右边是水流出去的地方,也就是 ...

  3. Nucleus 实时操作系统中断(下)

    Nucleus 实时操作系统中断(下) Nucleus RTOS兼容性 由于中断在Nucleus SE中的实现方式与Nucleus rto截然不同,因此不应期望有特定的兼容性.Nucleus RTOS ...

  4. Nucleus 实时操作系统中断(上)

    Nucleus 实时操作系统中断(上) Interrupts in the Nucleus SE RTOS 所有现代微处理器和微控制器都有某种中断设施.这种能力对于提供许多应用程序所需的响应能力是必不 ...

  5. 【NX二次开发】Block UI 指定平面

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...

  6. 32.qt quick-PathView实现好看的home界面

    pathView的使用类似与ListView,都需要模型(model)和代理(delegate),只不过pathView多了一个路径(path)属性,顾名思义路径就是item滑动的路径. 一个Path ...

  7. 北京某大公司:SpringBean生命周期

    <对线面试官>系列目前已经连载25篇啦!有深度风趣的系列! [对线面试官]Java注解 [对线面试官]Java泛型 [对线面试官] Java NIO [对线面试官]Java反射 & ...

  8. JWT理论知识

    JWT学习文章: 第一篇:JWT原理 第二篇:JWT原理实现代码 简介 JWT全拼是JSON Web Tocken,是目前最流行的跨域身份认证解决方案,特别适合分布式系统,减少用户麻烦,保证账号安全, ...

  9. 模拟windows10计算器的实现

    用户界面部分: import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.HashMap; impo ...

  10. 流程自动化RPA,Power Automate Desktop系列 - 批量备份Git仓库做好灾备

    一.背景 打个比如,你在Github上的代码库需要批量的定时备案到本地的Gitlab上,以便Github不能访问时,可以继续编写,这时候我们可以基于Power Automate Desktop来实现一 ...