Java基础之常用类

Java基础之常用类

  • 一、包装类
    • 1.1、Java基本数据类型及其对应的包装类
    • 1.2、包装类的自动装箱、自动拆箱机制
    • 1.3、包装类的优点
  • 二、String类
  • 三、StringBuffer类和StringBuilder类
    • 3.1、主要区别:
    • 3.2、StringBuffer/StringBuilder用法(两者用法一致)
  • 四、日期类
    • 4.1、Date类
    • 4.2、SimpleDateFormate和DateFormate类
    • 4.3、Calender类日期类
  • 五、JDK8日期类
    • 5.1、LocalDate
    • 5.2、LocalTime
    • 5.3、LocalDateTime
    • 5.4、ZoneDateTime
  • 六、Math类和Random类
    • 6.1、Math类
    • 6.2、Random类
  • 七、枚举类
  • 八、System类

一、包装类

Java包装类(Wrapper Classes)是一组用于将基本数据类型转换为对象的类。均位于java.lang包内

1.1、Java基本数据类型及其对应的包装类

基本数据类型包装类
整数类型byteByte
shortShort
intInteger
longLong
浮点类型floatFloat
doubleDouble
字符类型charCharacter
布尔类型booleanBoolean

1.2、包装类的自动装箱、自动拆箱机制

  • 创建一个包装类
Integer num = new Integer(0);    //创建一个数值为0的Integer对象
  • 基本类型数据和包装类对象互换
Integer num1= new Integer(8);//基本数据类型-->包装类
int num2=num1.intValue();//包装类转换成基本数据类型
System.out.println(num1+" "+num2);//1、包装类中的自动装箱拆箱机制
Integer  num1 = 1;		//自动装箱
int num2 = num1;		//自动拆箱
System.out.println(num1 +"	"+ num2);

1.3、包装类的优点

  • 某些方法参数必须为对象,包装类使数据类型转换成对象
  • 获得类型的最大值:Integer.MAX_VALUE
  • 最小值Integer.MIN_VALUE
  • 将一个类型转为另一个类型integer.doubleValue()
  • 将字符串转化为数字Integer.parseInt(“100”)
  • 将数字转化为字符串Integer.toString(100)

二、String类

String 是 Java 中的一个类,用于表示字符串。在 Java 中,字符串是不可变的,这意味着一旦创建了一个字符串对象,就不能再修改它的内容。String 类位于 java.lang 包中,因此在大多数情况下不需要显式导入。

import java.util.Arrays;
import java.util.StringTokenizer;/*** @BelongsProject: Test* @BelongsPackage: FaceObject* @Author: Jorya* @CreateTime: 2023-11-21  22:26* @Description: TODO* @Version: 1.0*/
public class TestString {public static void main (String[] args){//①字符串的创建// 使用字面值创建字符串String str1 = "Hello, World!";String str2 = "Hello, World!";//这两个的地址是一样的,并没有重新生成一个字符串System.out.println(str1==str2);//true// 使用构造函数创建字符串String str3 = new String("Hello, World!");String str4 = new String("Hello, World!");System.out.println(str3==str4);//判断是否全部一样,因为是不同对象。FalseSystem.out.println(str3.equals(str4));//equals是判断内容是否相等:trueSystem.out.println(str3.equalsIgnoreCase(str4));// 忽略大小写比较System.out.println(str3.compareTo(str4));//判断字符串是否相等,区分大小写//②字符串的链接// 使用加号进行字符串连接String fullName = str1 + " " + str2;// 使用 concat 方法String fullNameConcat = str1.concat(" ").concat(str2);System.out.println(fullName);System.out.println(str1.length());//获取字符串长度System.out.println(str1.isEmpty());//判断字符串是否为空System.out.println(str1.endsWith("!"));//判断字符串是否以!结尾System.out.println(str1.startsWith("H"));//判断字符串是否以H开始System.out.println(str1.toUpperCase());//全部转换为大写System.out.println(str1.toLowerCase());//全部转换为小写System.out.println(str1.charAt(2));//获得字符串的第3个字符l;java的下标是从0开始的System.out.println(str1.toCharArray());//字符串转数组System.out.println(str1.indexOf("l"));//查找字符串第一次出现的位置System.out.println(str1.indexOf("l",2));//从指定位置查找字符串第一次出现的位置System.out.println(str1.lastIndexOf("o"));//从后往前查找字符串第一次出现的位置System.out.println(str1.substring(2));//从指定位置截取字符串System.out.println(str1.substring(2,5));//截取中间某处的字符串System.out.println(str1.substring(7)); // 从索引 7 开始截取到字符串末尾System.out.println(str1.contains("World")); //检查字符串包括System.out.println(str1.replace("World", "Java"));  //字符串替换//字符串分割String[] split = str1.split(" ");//按指定字符串分割字符串System.out.println(Arrays.toString(split));//去掉首尾空格String str5 = "   Trim Me   ";String trimmedStr = str5.trim();//字符串格式化String name = "John";int age = 25;String formattedString = String.format("Name: %s, Age: %d", name, age);}
}

三、StringBuffer类和StringBuilder类

StringBuffer和StringBuilder类用法几乎一模一样,都为抽象类、是AbstractStringBuilder的子类

3.1、主要区别:

StringBufferStringBuilder
线程安全线程不安全
效率较慢效率快、建议使用
方法同步、适用于多线程不提供同步、适用于单线程
//比较String、StringBuilder、StringBuffer的运行时间
public class StringBufferTest {public static void main(String[] args) {long startTime, endTime;// 使用 String 拼接String s1 = "";startTime = System.currentTimeMillis();for (int i = 0; i < 100000; i++) {s1 = s1.concat("拼接");}endTime = System.currentTimeMillis();System.out.println("String 用时: " + (endTime - startTime) + "ms,长度:" + s1.length());// 使用 StringBuilder 拼接StringBuilder s2 = new StringBuilder();startTime = System.currentTimeMillis();for (int i = 0; i < 1000000; i++) {s2.append("拼接");}endTime = System.currentTimeMillis();System.out.println("StringBuilder 用时: " + (endTime - startTime) + "ms,长度:" + s2.length());// 使用 StringBuffer 拼接StringBuffer s3 = new StringBuffer();startTime = System.currentTimeMillis();for (int i = 0; i < 1000000; i++) {s3.append("拼接");}endTime = System.currentTimeMillis();System.out.println("StringBuffer 用时: " + (endTime - startTime) + "ms,长度:" + s3.length());}
}

在这里插入图片描述

3.2、StringBuffer/StringBuilder用法(两者用法一致)

// 创建一个空的 StringBuffer
StringBuffer buffer = new StringBuffer();
// 添加字符串
buffer.append("Hello");
// 在特定位置插入字符串
buffer.insert(5, ", World!");
// 替换字符串
buffer.replace(0, 5, "Hi");
// 删除字符串
buffer.delete(3, 6);
// 反转字符串
buffer.reverse();
// 获取字符串长度
int length = buffer.length();
// 转换为字符串
String result = buffer.toString();

四、日期类

4.1、Date类

在 Java 中,Date 类用于表示日期和时间。请注意,Date类在 Java 8 之后已经过时,更推荐使用 java.time 包中的新日期和时间 API(java.time 包中的类,如 LocalDateLocalTimeLocalDateTime

import java.util.Date;
//日期类
public class TestDate {public static void main(String[] args) {Date currentDate = new Date();System.out.println(currentDate);System.out.println(currentDate.getTime());//获取1970年1月1日到现在的毫秒数System.out.println(currentDate.toLocaleString());//获取当前时间的字符串int year = currentDate.getYear() + 1900;        // 获取年份(从1900开始)int month = currentDate.getMonth() + 1; // 获取月份(从0开始,需要加1)int day = currentDate.getDate();// 获取日期// 获取小时、分钟、秒int hours = currentDate.getHours();int minutes = currentDate.getMinutes();int seconds = currentDate.getSeconds();java.sql.Date date1 = new java.sql.Date(System.currentTimeMillis());System.out.println(date1);//只有年月日String t="2019-8-20";java.sql.Date date2 = java.sql.Date.valueOf(t);//将字符串转化为日期System.out.println(date2);}
}

4.2、SimpleDateFormate和DateFormate类

import java.text.DateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
//日期类
public class TestDate {public static void main(String[] args) {Date currentDate = new Date();// 创建 SimpleDateFormat 对象并指定日期格式SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 格式化日期String formattedDate = sdf.format(currentDate);System.out.println("SimpleDateFormat Date: " + formattedDate);//创建格式化日期格式为:"yyyy-MM-dd hh:mm:ss";因为DateFormat是一个抽象类不能new对象,所以new一个他的子类;这叫多态DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");String format = dateFormat.format(currentDate);//格式化这个日期类,返回String字符串System.out.println("DateFormat Date: "+format);//2022-05-16 10:03:29}
}

SimpleDateFormat sdf = new SimpleDateFormat(“日期格式字符串”);
日期格式字符串,如:“yyyy-MM-dd hh:mm:ss”
yyyy 代表4位的年份
MM 代表2位的月份
dd 代表2位的日期
hh/HH 12小时制/24小时制
mm 代表分钟
ss 代表秒钟
a 代表AM/PM

4.3、Calender类日期类

import java.text.SimpleDateFormat;
import java.util.*;public class TestCalendar {public static void main(String[] args) {//Calendar这也是一个抽象类,需要new他的子类Calendar calendar = new GregorianCalendar();System.out.println(calendar);System.out.println(calendar.get(Calendar.YEAR));//获取年月日System.out.println(calendar.get(Calendar.MARCH)+1);//月是从0开始的System.out.println(calendar.get(Calendar.DATE));System.out.println(calendar.getActualMaximum(Calendar.DATE));//获取当前月最大天数//日期类和日历类相互转化// 1. Date 转 CalendarDate currentDate = new Date();Calendar calendarFrom = Calendar.getInstance();calendarFrom.setTime(currentDate);// 输出 Calendar 对象的日期和时间System.out.println("1. Calendar from Date:");printCalendar(calendarFrom);// 2. Calendar 转 DateCalendar calendarTo = Calendar.getInstance();calendarTo.set(2023, Calendar.JANUARY, 1); // 2023-01-01Date date = calendarTo.getTime();// 输出转换后的 Date 对象SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");System.out.println("\n2. Date from Calendar: " + sdf.format(date));}private static void printCalendar(Calendar calendar) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");System.out.println("  Time: " + sdf.format(calendar.getTime()));}
}

五、JDK8日期类

​ 在 Java 8 中,引入了新的日期和时间 API,这个 API 位于 java.time 包中。以下是一些 Java 8 中日期和时间 API 的常用类:

属性含义
Instant代表的是时间相当于Date
LocalDate代表日期,比如2022-01-14
LocalTime代表时间,比如12:20:30
LocalDateTime代表具体时间,比如2022-01-14 12:20:30
ZonedDateTime代表一个包含时区的完整的日期时间
DateTimeFormatter日期和字符串格式转换

5.1、LocalDate

import java.time.LocalDate;public class LocalDateExample {public static void main(String[] args) {// 获取当前日期LocalDate currentDate = LocalDate.now();// 创建指定日期LocalDate specificDate = LocalDate.of(2023, 1, 1);// 获取日期属性int year = specificDate.getYear();int month = specificDate.getMonthValue();int dayOfMonth = specificDate.getDayOfMonth();int dayOfWeek = specificDate.getDayOfWeek().getValue();int dayOfYear = specificDate.getDayOfYear();// 在当前日期基础上加上一天LocalDate nextDay = currentDate.plusDays(1);// 在当前日期基础上减去一周LocalDate lastWeek = currentDate.minusWeeks(1);}
}

5.2、LocalTime

import java.time.LocalTime;public class LocalTimeExample {public static void main(String[] args) {// 获取当前时间LocalTime currentTime = LocalTime.now();// 创建指定时间LocalTime specificTime = LocalTime.of(12, 30, 45);// 获取时间属性int hour = specificTime.getHour();int minute = specificTime.getMinute();int second = specificTime.getSecond();int nano = specificTime.getNano();// 在当前时间基础上加上一小时LocalTime nextHour = currentTime.plusHours(1);// 在当前时间基础上减去半小时LocalTime halfHourAgo = currentTime.minusMinutes(30);}
}

5.3、LocalDateTime

import java.time.LocalDateTime;public class LocalDateTimeExample {public static void main(String[] args) {// 获取当前日期和时间LocalDateTime currentDateTime = LocalDateTime.now();// 创建指定日期和时间LocalDateTime specificDateTime = LocalDateTime.of(2023, 1, 1, 12, 30, 45);// 在当前日期和时间基础上加上一天LocalDateTime nextDay = currentDateTime.plusDays(1);// 在当前日期和时间基础上减去一周LocalDateTime lastWeek = currentDateTime.minusWeeks(1);}
}

5.4、ZoneDateTime

import java.time.ZonedDateTime;
import java.time.ZoneId;public class ZonedDateTimeExample {public static void main(String[] args) {// 获取当前日期和时间(带时区信息)ZonedDateTime currentDateTimeWithZone = ZonedDateTime.now();// 创建指定日期和时间(带时区信息)ZonedDateTime specificDateTimeWithZone = ZonedDateTime.of(2023, 1, 1, 12, 30, 45, 0, ZoneId.of("America/New_York"));// 在当前日期和时间基础上加上一天(带时区信息)ZonedDateTime nextDayWithZone = currentDateTimeWithZone.plusDays(1);// 在当前日期和时间基础上减去一周(带时区信息)ZonedDateTime lastWeekWithZone = currentDateTimeWithZone.minusWeeks(1);}
}

六、Math类和Random类

6.1、Math类

java.lang.Math 类包含用于执行基本数学运算的静态方法。这些方法提供了对常见数学函数的访问,如三角函数、指数函数、对数函数等。

public class MathExample {public static void main(String[] args) {// 基本数学运算int sum = Math.addExact(5, 3); // 返回两个整数的和,溢出时抛出异常。int difference = Math.subtractExact(8, 3); // 返回两个整数的差int product = Math.multiplyExact(4, 7); //返回两个整数的积int incremented = Math.incrementExact(10); // 返回参数的值加 1int decremented = Math.decrementExact(7); //返回参数的值减 1int negated = Math.negateExact(9); // 返回参数的负值// 取整和舍入double ceilValue = Math.ceil(3.14); // 4.0 返回不小于参数的最小整数double floorValue = Math.floor(3.14); // 3.0 返回不大于参数的最大整数long roundedValue = Math.round(3.14); // 3 返回参数最接近的整数// 指数和对数double expValue = Math.exp(2.0); // 7.3890560989306495  返回自然数底数 e 的指数double logValue = Math.log(10.0); // 2.302585092994046   返回参数的自然对数double powValue = Math.pow(2.0, 3.0); // 8.0  返回 a 的 b 次幂// 三角函数double sinValue = Math.sin(Math.toRadians(30)); // 0.49999999999999994 返回角的正弦double cosValue = Math.cos(Math.toRadians(60)); // 0.5000000000000001返回角的余弦double tanValue = Math.tan(Math.toRadians(45)); // 0.9999999999999999 返回角的正切}
}

6.2、Random类

  • 构造

    Random random =new Random();
    
  • 获得随机数

    Random.nextInt(100);
    

    代码示例:

    import java.util.Random;
    public class TestRandom {public static void main(String[] args) {Random random = new Random();System.out.println(random.nextInt(100));//获取100以内的随机整数System.out.println(random.nextFloat());//获取浮点随机}
    }
    

七、枚举类

所有的枚举类型隐性地继承自java.lang.Enum, 枚举的实质还是类。

代码示例:

// 定义一个简单的枚举类型
enum Day {SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}public class EnumExample {public static void main(String[] args) {// 使用枚举常量Day today = Day.MONDAY;System.out.println("Today is " + today);// 枚举常量的比较if (today == Day.MONDAY) {System.out.println("It's a workday.");}// 遍历枚举值System.out.println("Days of the week:");for (Day day : Day.values()) {System.out.println(day);}}
}

八、System类

  • System.in : 标准输入流
Scanner scanner = new Scanner(System.in);
System.out.print("Enter your name: ");
String name = scanner.nextLine();
System.out.println("Hello, " + name + "!");
  • System.exit(int status) :退出程序
System.exit(0); // 正常退出
System.exit(1); // 异常退出
  • System.currentTimeMillis() :获取当前时间毫秒数
long currentTimeMillis = System.currentTimeMillis();
System.out.println("Current time in milliseconds: " + currentTimeMillis);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/226034.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

捷达EA113汽油机四缸汽车曲柄连杆机构毕业设计

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;捷达 获取完整论文报告工程源文件 本文以捷达EA113汽油机的相关参数作为参考&#xff0c;对四缸汽油机的曲柄连杆机构的主要零部件进行了结构设计计算&#xff0c;并对曲柄连杆机构进行了有关运动学和动力学的理论分析与计…

具身智能17篇创新性论文及代码合集,2023最新

今天来聊聊人工智能领域近期的一个热门研究方向——具身智能。 具身智能&#xff08;Embodied Intelligence&#xff09;指的是机器人或智能体通过感知、理解和交互来适应环境&#xff0c;并执行任务的能力。与传统的基于规则或符号的人工智能不同&#xff0c;具身智能强调将感…

Vue3水印(Watermark)

APIs 参数说明类型默认值必传width水印的宽度&#xff0c;默认值为 content 自身的宽度numberundefinedfalseheight水印的高度&#xff0c;默认值为 content 自身的高度numberundefinedfalserotate水印绘制时&#xff0c;旋转的角度&#xff0c;单位 number-22falsezIndex追加…

Kafka生产者发送消息的流程

Kafka 生产者发送消息的流程涉及多个步骤&#xff0c;从消息的创建到成功存储在 Kafka 集群中。以下是 Kafka 生产者发送消息的主要步骤&#xff1a; 1. 创建消息 生产者首先创建一个消息&#xff0c;消息通常包含一个键&#xff08;可选&#xff09;和一个值&#xff0c;以及…

Unity 自带的一些可以操控时间的属性或方法。

今天来总结下Unity自带的一些可以操控时间的方法。 1、Time.time。比较常用计算运行时间而触发特定事件。 public class Controller : MonoBehaviour {public float eventTime 5f; // 触发事件的时间private float startTime; // 游戏开始的时间private void Start(){startT…

MySQL数据库入门到大牛_基础_17_触发器

文章目录 1. 触发器概述2. 触发器的创建2.1 创建触发器语法2.2 代码举例 3. 查看、删除触发器3.1 查看触发器3.2 删除触发器 4. 触发器的优缺点4.1 优点4.2 缺点4.3 注意点 5. 第十七章练习 在实际开发中&#xff0c;我们经常会遇到这样的情况&#xff1a;有 2 个或者多个相互关…

【开源】基于Vue.js的高校学生管理系统的设计和实现

项目编号&#xff1a; S 029 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S029&#xff0c;文末获取源码。} 项目编号&#xff1a;S029&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学生管理模块2.2 学院课程模块2.3 学…

deque容器结构学习笔记

1.结构图 2.deque对比vector和list deque双端队列&#xff0c;就像是list和vector的结合 vector&#xff1a; 优点&#xff1a;1.可以随机读取 2. 空间利用率高 缺点&#xff1a;1. 除了尾插尾删&#xff0c;其他插入删除效率比较低 2. 扩容效率低 list&#xff1a; 优点&…

和鲸社区 × 浙大地科学院:DDE 深时数字地球国际大科学计划系列工作坊圆满收官!

AI for Good&#xff0c;AI for Science&#xff0c;11 月 23 日&#xff0c;由和鲸社区联合浙江大学地球科学学院师生共同发起的 DDE 深时数字地球国际大科学计划系列工作坊正式落下帷幕。 深时数字地球&#xff08;Deep-time Digital Earth&#xff0c;DDE&#xff09;是由我…

视频文件+EasyDarwin做摄像机模拟器模拟RTSP流很方便,还能做成系统服务,方法与流程

之前我看到过一家人工智能做算法的企业&#xff0c;用EasyDarwinFFMPEG做了一个摄像机的模拟器&#xff0c;方法大概是&#xff1a; 用ffmpeg读取mp4等类型的视频文件&#xff08;当然ffmpeg啥都能读取&#xff09;&#xff0c;再以RTSP协议的形式推送给EasyDarwin&#xff1b…

【Java】I/O流—缓冲流的基础入门和文件拷贝的实战应用

&#x1f33a;个人主页&#xff1a;Dawn黎明开始 &#x1f380;系列专栏&#xff1a;Java ⭐每日一句&#xff1a;你能坚持到什么程度&#xff0c;决定你能达到什么高度 &#x1f4e2;欢迎大家关注&#x1f50d;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; 文章目录 一.&…

前端开发学习 (三) 列表功能

一、列表功能 1、列表功能 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compa…