StringBuffer、StringBuilder、StringJoiner

String/StringBuffer/StringBuilder的区别 String:不可变的字符序列 StringBuffer:可变的字符序列,线程安全,效率低 StringBuilder:可变的字符序列,线程不安全,效率高 它们的共同点是底层都是用char[]存储的。 StringBuilder常用方法 StringBuffer与StringBuilder用法几乎完全一致,区别就在于一个线程…

JDK8 之前日期时间API

首先我们需要知道时区的概念,同一时刻不同时区他们的表上的时间是不一样的。所以,我们在存取时间的时候,尽量存时间戳而不是时间字符串。特别是国际化的项目,一定是存时间戳(Epoch Time),而不能是时间字符串。 在java中,用长整型来存放时间戳(毫秒数); 标准库API 我们再来看一下Java标准库提供的API。Java标准库有两套处理日期和时间的API: 一套定义在java.util这个包里面…

JDK8 中新日期时间API

从Java 8开始,java.time包提供了新的日期和时间API,主要涉及的类型有: 本地日期和时间:LocalDateTime,LocalDate,LocalTime; 带时区的日期和时间:ZonedDateTime; 时刻:Instant; 时区:ZoneId,ZoneOffset; 时间间隔:Duration。 以及一套新的用于取代SimpleDateFormat的格式化类型DateTim…

关于时间日期的几个练习

从Java 8开始,java.time包提供了新的日期和时间API,主要涉及的类型有三个重要的处理时间日期的类: LocalDateTime 通过日期时间来创建 DateTimeFormatter 日期时间格式化工具 Instant:通过时间戳来创建 下面来通过几个例子来看看这几个类的用法: 日期时间戳互相转换 首先看给定一个日期,获取时间戳的操作。 import java.time.*; imp…

格式化输出

格式化输出 c语言中有个printf函数,在java中,也有对应的方法,他们的用户基本一致。 System.out.printf("%8.2f", x); 下面是printf可以使用的转换符 可以使用s转换符格式化任意的对象。 可以使用多个标志, 例如 , “%,( . 2 f ” 使用分组的分隔符并将负数括在括号内 。 可以使用静态的String.format方法创建一个格式…

javase

BigInteger、BigDouble

如果基本的整数和浮点数精度不能够满足需求,那么可以使用java.math包中的两个很有用的类:BigInterger和BigDecimal。这两个类可以处理任意长度数字序列的数值。BigInterger实现任意精度的整数运算,BigDecimal实现任意精度的浮点数运算。 使用大数需要注意的是,不能使用人们习惯的算术运算符(+、-、*、/)等,而需要使用大数自己的方法。 import java.m…

javase

System类

System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包。 由于该类的构造器是private的,所以无法创建该类的对象,也就是无法实例化该类。其内部的成员变量和成员方法都是static的,所以也可以很方便的进行调用。 成员属性 System类内部包含in、out和err三个成员变量,分别代表标准输入流(键盘输入),标准输出流(显示器)和标准错误输出流(显示…

javase

Objects

在JDK7版本的时候,Java引入了java.util.Objects工具类,用于封装一些平时使用频度很高或容易出错的操作,这些操作形成了Objects的各个方法,下来我们来看看这些方法。 1. Objects()构造方法 private Objects() { throw new AssertionError("No java.util.Objects instances for yo…

面向对象概述

面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分。 类 可以将类想象成制作小甜饼的模具,将对象想象为小甜饼。有类构造对象的过程称之为创建类的实例。 面向对象三大特性: 封装 继承 多态 对象 创建对象即类的实例化过程。通过类可以创建一个或多个对象,每个对象都保存着自己的属性。 类之间的关系 最常见的关系有: 依赖 (uses-a) 聚合(has-a) 继承(is-…