String类的两种赋值方式:
String name = “小白”
String name = new String(“小白”)
String类的两种赋值分析:
String类编译期与运行期分析:
String类字符与字符串操作方法:
String类字节与字符串操作方法:
String类判断是否以指定内容开头或结尾:
String类替换操作:
String类字符串截取操作:
String类字符串拆分操作:
String类字符串查找操作:
String类其它操作方法:
在实际开发当中,我们经常会使用到字符串连接的操作,如果用String来操作,则使用“+”号完成字符串的连接操作。
使用String连接字符串,代码性能会非常低,因为String的内容不可改变。
解决这个问题的方法是使用StringBuffer。
StringBuffer类源码分析
StringBuffer常用操作方法
StringBuffer的兄弟StringBuilder:
一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比StringBuffer 要快。
JDK1.5以后,字符串相加原理分析
对国际化程序的理解
Internationalization:国际化程序可以这样理解:
Locale类
Locale 对象表示了特定的地理、政治和文化地区。需要 Locale 来执行其任务的操作称为语言环境敏感的操作,它使用 Locale 为用户量身定制信息。例如,显示一个数值就是语言环境敏感的操作,应该根据用户的国家、地区或文化的风俗/传统来格式化该数值。
Locale(String language)
Locale(String language, String country)
getDefault()
ResourceBundle类
国际化的实现核心在于显示的语言上,通常的做法是将其定义成若干个属性文件(文件后缀是*.properties),属性文件中的格式采用“key=value”的格式进行操作。
处理动态文本
Math类
Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
使用Math类可以有两种方式:
Random类
Random:此类的实例用于生成伪随机数流
Date类
Date date = new Date(); // 实例化Date对象,表示当前时间
Calendar类
//两种实例化方式
Calendar c = Calendar.getInstance();
Calendar c = new GregorianCalendar();
DateFormat类及子类SimpleDateFormat
对两个或多个数据项进行比较,以确定它们是否相等,或确定它们之间的大小关系及排列顺序称为比较。
前面我学习过Arrays.sort方法可实现对象的排序操作:
public static void sort(Object[] a)
Comparable接口:
Comparator接口:
将一个对象复制一份,称为对象的克隆技术。
在Object类中存在一个clone()方法:
protected Object clone() throws CloneNotSupportedException
如果某个类的对象要想被克隆,则对象所在的类必须实现Cloneable接口。此接口没有定义任何方法,是一个标记接口。
System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包。
成员变量
成员方法
System类中提供了一些系统级的操作方法
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
public static long currentTimeMillis()
public static void exit(int status)
public static void gc()
public static String getProperty(String key)
Runtime类:每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。
//获取Java运行时相关的运行时对象
Runtime rt = Runtime.getRuntime();
System.out.println("处理器数量:" + rt.availableProcessors()+" 个");
System.out.println("Jvm总内存数 :"+ rt.totalMemory()+" byte");
System.out.println("Jvm空闲内存数:"+ rt.freeMemory()+" byte");
System.out.println("Jvm可用最大内存数:"+ rt.maxMemory()+" byte");
//在单独的进程中执行指定的字符串命令。
rt.exec("notepad");
构造方法:
public BigInteger(String val)
常用方法:
public BigInteger add(BigInteger val)
public BigInteger subtract(BigInteger val)
public BigInteger multiply(BigInteger val)
public BigInteger divide(BigInteger val)
public BigInteger[] divideAndRemainder(BigInteger val)
构造方法:
public BigDecimal(String val)
常用方法:
public BigDecimal add(BigDecimal augend)
public BigDecimal subtract(BigDecimal subtrahend)
public BigDecimal multiply(BigDecimal multiplicand)
public BigDecimal divide(BigDecimal divisor)
例如,取2位小数。
示例:
double pi=3.1415927; //圆周率
//取一位整数,结果:3
System.out.println(new DecimalFormat("0").format(pi));
//取一位整数和两位小数,结果3.14
System.out.println(new DecimalFormat("0.00").format(pi));
//取两位整数和三位小数,整数不足部分以0填补,结果:03.142
System.out.println(new DecimalFormat("00.000").format(pi));
//取所有整数部分,结果:3
System.out.println(new DecimalFormat("#").format(pi));
//以百分比方式计数,并取两位小数,结果:314.16%
System.out.println(new DecimalFormat("#.##%").format(pi));
//确定计算方法
MessageDigest md5=MessageDigest.getInstance("MD5");
//JDK1.8新增Base64
String newstr = Base64.getEncoder().encodeToString(md5.digest(str.getBytes("utf-8")));
//1.8之前使用sun.misc.BASE64Encoder(此类没有访问权限,在rt.jar中添加访问权限:sun/misc/*)
BASE64Encoder base64 = new BASE64Encoder();
base64.encode(md5.digest(str.getBytes("utf-8")));
二叉树算法的排序规则:
8、3、10、1、6、14、4、7、13
Lambda表达式
语法:
(参数1,参数2...) -> { ... }
接口中的默认方法和静态方法
interface A{
public default void print(){}
public static void method(){}
}
默认方法与静态方法并不影响函数式接口的契约,可以任意使用