String类是final类型,String字符串是常量,不可改变。
String类两种初始化方法(效果相同):
String 变量名 = “字符串”;
String 变量名 = new String(“字符串”);
String构造方法
方法声明 | 功能描述 |
---|---|
String() | 创建一个内容为空的字符串 |
String(String value) | 根据指定的字符串内容创建对象 |
String(char[] value) | 根据指定的字符数组创建对象 |
实例代码
public class CommonlyUsed {
String s1 = "我是阿凡不平凡";
String s2 = new String("我是阿凡不平凡");
String s3 = new String(new char[]{'我','是','阿','凡','不','平','凡'});
public void test(){
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s1+s2+s3);
}
public static void main(String[] args) {
new CommonlyUsed().test();
}
}
如果“+“两边操作数有一个是String类型,那么”+”表示字符串连接运算符
String类的常用方法
方法声明 | 功能描述 |
---|---|
int length() | 返回此字符串的长度 |
char charAt(int index) | 返回此字符串中第index位置上的字符 |
int indexof(String str) | 返回str在此字符串中第一次出现的索引 |
int lastIndexOf(String str) | 返回str在此字符串中最后一次出现的索引 |
实例代码
public class CommonlyUsed {
public static void main(String[] args) {
String str = "我是阿凡不平凡";
System.out.println(str.length()); //7
System.out.println(str.charAt(3)); //凡
System.out.println(str.indexOf("凡")); //3
System.out.println(str.lastIndexOf("凡")); //6
}
}
方法声明 | 功能描述 |
---|---|
char[] toCharArray() | 将此字符串转化为字符数组 |
static String valueOf(int num) | 将int类型的num转化为String类型 |
String toUpperCase() | 将此字符串字符都转化为大写 |
String toLowerCase() | 将此字符串字符都转化为小写 |
实例代码
public class CommonlyUsed {
public static void main(String[] args) {
String str = "Hello,我是AFan不平凡";
double num = 1314521.520;
char[] charArray = str.toCharArray();
for (char c : charArray) {
System.out.print(c+"\t");
}
System.out.println();
String s1 = String.valueOf(num);
System.out.println(s1);
String s2 = str.toLowerCase();
System.out.println(s2);
}
//运行结果:
//H e l l o , 我 是 A F a n 不 平 凡
//1314521.52
//hello,我是afan不平凡
}
方法声明 | 功能描述 |
---|---|
String trim() | 返回去除此字符串首尾的空格的新字符串 |
String replace(String s1,String s2) | 返回用s2全部替换此字符串出现的所有s1的新字符串 |
实例代码
public class CommonlyUsed {
public static void main(String[] args) {
String str = " 我是AFan,我是aFan,我是阿凡 ";
System.out.println(str.trim());
System.out.println(str.replace("我","I"));
}
//运行结果:
//我是AFan,我是aFan,我是阿凡
// I是AFan,I是aFan,I是阿凡
}
方法声明 | 功能描述 |
---|---|
boolean startsWith(String str) | 判断字符串是否以str开头 |
boolean endsWith(String str) | 判断字符串是否以str结尾 |
boolean contains(String str) | 判断字符串是否包含str |
boolean isEmpty() | 判断字符串是否是空字符串 |
boolean equals(String str) | 判断此字符串是否与str相同 |
"=="与"equal"的区别:
- "=="比较的是两个对象的内存地址
- "equal"比较的是两个对象的字符串值
实例代码
public class CommonlyUsed {
public static void main(String[] args) {
String str = " 我是AFan,我是aFan,我是阿凡 ";
String str2 = " 我是AFan,我是aFan,我是阿凡 ";
System.out.println(str.startsWith("阿凡")); //false
System.out.println(str.endsWith("afan")); //false
System.out.println(str.contains("aFan")); //true
System.out.println(str.isEmpty()); //false
System.out.println(str.equals(str2)); //true
System.out.println(str == str2); //true
}
}
5.字符串的截取和分割
方法声明 | 功能描述 |
---|---|
String substring(int s,int e) | 返回位置在s~e之间的新字符串 |
String[] split(String r) | 根据正则表达式r的规则分割此字符串 |
实例代码
public class CommonlyUsed {
public static void main(String[] args) {
String str = "我是AFan,我是aFan,我是阿凡";
String s1 = str.substring(2, 6);
System.out.println(s1); //AFan
String[] split = str.split("是");
for (int i = 0; i < split.length; i++) {
System.out.print(split[i]+" ");
}//我 AFan,我 aFan,我 阿凡
System.out.println();
for (int i = 0; i < split.length; i++) {
if(i != split.length-1){
System.out.print(split[i]+"--");
}else{
System.out.print(split[i]);
} //我--AFan,我--aFan,我--阿凡
}
}
}
作用:字符串缓冲区,操作String字符串,在原字符串基础上对此字符串增删改。
StringBuffer类常用方法
方法声明 | 功能描述 |
---|---|
StringBuffer append(char c) | 在StringBuffer对象末尾添加字符c |
StringBuffer insert(int d,String str) | 在StringBuffer对象第d位置添加字符串str |
StringBuffer deleteChartAt(int d) | 删除StringBuffer对象第d位置的字符 |
StringBuffer delete(int s,int e) | 删除StringBuffer对象s~e位置的字符串 |
StringBuffer replace(int s,int e,String str) | 用str替换StringBuffer对象s~e位置的字符串 |
void setCharAt(int d,char ch) | 用ch替换StringBuffer对象第d位置的字符串 |
String toString() | 返回StringBuffer对象中的String对象 |
StringBuffer reverse() | 将此字符串反转 |
实例代码
public class CommonlyUsed {
public static void main(String[] args) {
String str = "520,我是阿凡";
StringBuffer sbf = new StringBuffer(str);
sbf.append(24.0);
System.out.println("增加字符后:"+sbf);
sbf.insert(4,"Hello World");
System.out.println("中途插入字符:"+sbf);
sbf.delete(0,6);
System.out.println("删除字符后:"+sbf);
sbf.replace(0,9,"大家好");
System.out.println("替换后:"+sbf);
sbf.reverse();
System.out.println("反转后:"+sbf);
String std = sbf.toString();
System.out.println("返回字符串对象:"+std);
}
/*运行结果:
增加字符后:520,我是阿凡24.0
中途插入字符:520,Hello World我是阿凡24.0
删除字符后:llo World我是阿凡24.0
替换后:大家好我是阿凡24.0
反转后:0.42凡阿是我好家大
返回字符串对象:0.42凡阿是我好家大
*/
}
String类与StingBuffer类区别:
String类定义的字符串是常量,一旦创建,内容和长度都不可改变。
StringBuffer类表示字符容器,可以任意增删操作字符串的字符。
String类重写了Object类的equal()方法,两个相同值字符串对象比较后结果为true。
StringBuffer类没有重写equal()方法,两个相同值字符串对象比较后结果为false(==)。
String对象可以用“ + ”连接字符串。
StringBuffer对象之间不能。
作用:获得一些与系统相关的信息,类中的属性与方法都是static静态的
native方法 :是java调用其他编程语言的方法来实现对底层操作系统的控制
System类常用方法
方法声明 | 功能描述 |
---|---|
static void exit(int s) | 若s为0,终止程序运行,若s为非0时,表示程序出现异常 |
static void gc() | 运行垃圾回收器 |
static native long currentTimeMillis() | 返回以毫秒为单位的当前时间 |
static void arrayCopy(Object o1,int s1,Object o2,int s2,int length) | 将数组o1元素按要求拷贝到数组o2 |
static Properties getProperties() | 取得当前的系统属性 |
static String getProperty(String key) | 获取指定键描述的系统属性 |
方法详解:
getProperties()
功能:获取当前系统的全部属性,该方法返回一个Properties对象,其中封装了系统的全部属性,这些属性以键值对的形式存在。
实例代码
public class Example {
public static void main(String[] args) {
//获取当前系统属性
Properties properties = System.getProperties();
System.out.println(properties);
//获取所有系统属性的key值,返回Set对象
Set<String>propertyNames = properties.stringPropertyNames();
for (String key : propertyNames) {
//根据键key来获取对应的value值
String value = System.getProperty(key);
System.out.println(value);
}
}
}
功能:计算程序运行时间
实例代码
public class Example {
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
int sum = 0;
for (int i = 0; i < 10000000; i++) {
sum = sum + i;
}
long endTime = System.currentTimeMillis();
System.out.println("一共耗费"+(endTime-startTime)+"毫秒");
}
}
arrayCopy(Object o1,int s1,Object o2,int s2,int length)
功能:将数组o1从位置s1开始长度为length的元素拷贝到数组o2从s2位置开始长度为length的空间里(如果数组o2的空间不够,会发生异常)
注意:o1,o2数据类型要一致,拷贝元素会覆盖o2原有位置的元素。
实例代码
public class Example {
public static void main(String[] args) {
int[] o1 = {12,34,5,67,8,1,0};
int[] o2 = {11,23,32,4,55,3,19};
System.arraycopy(o1,0,o2,0,7);
for (int i = 0; i < o2.length; i++) {
System.out.print(o2[i]+" "); //12 34 5 67 8 1 0
}
}
}
作用:表示java虚拟机进程运行的状态,用于封装java虚拟机进程。
Runtime类常用方法详解
getRuntime()
功能:获取相关的Runtime对象,通过这个对象来获取当前虚拟机的相关信息。
Runtime 变量名 = Runtime.getRuntime();
实例代码
public class Example {
public static void main(String[] args) {
Runtime rt = Runtime.getRuntime();
System.out.println("处理器的个数:"+rt.availableProcessors()+"个");
System.out.println("空闲内存大小:"+rt.freeMemory()/1024/1024+"M");
System.out.println("最大可用内存大小:"+rt.maxMemory()/1024/1024+"M");
}
exec()
功能:返回Process对象(功能:管理产生的新进程),执行DOS命令
实例代码
public class Example {
public static void main(String[] args) throws Exception {
Runtime rt = Runtime.getRuntime();
Process notepad = rt.exec("notepad");
Thread.sleep(3000); //程序休眠3秒
notepad.destroy(); //关闭进程
}
}
工具类,构造方法为private,无法创建对象,所有的方法都是静态方法
两个静态常量
Math.PI 表示 π
Math.E 表示 e
作用:完成复杂的数学运算
实例代码
public class Example{
public static void main(String[] args) {
System.out.println("计算绝对值:"+Math.abs(-2.7));
System.out.println("计算正弦:"+Math.sin(Math.PI/2));
System.out.println("计算余弦:"+Math.cos(0));
System.out.println("计算正切:"+Math.tan(Math.PI));
System.out.println("计算平方根:"+Math.sqrt(9));
System.out.println("计算立方根:"+Math.cbrt(27));
System.out.println("计算乘方:"+Math.pow(2,4));
System.out.println("求大于参数的最小整数:"+Math.ceil(4.6));
System.out.println("求小于参数的最大整数:"+Math.floor(4.6));
System.out.println("求对小数进行四舍五入:"+Math.round(3.473));
System.out.println("求两个数的最大值:"+Math.max(2,4)); System.out.println("求两个数的最小值:"+Math.min(2,4));
System.out.println("生成一个大于等于0.0小于1.0的随机数:"+Math.random());
}
}
作用:创建随机数生成器,在指定的取值范围内随机产生数字
Random类的构造方法
方法声明 | 功能描述 |
---|---|
Random() | 每次实例化对象都会产生不同的随机数 |
Random(long s) | 当s相同时,每次实例化对象会产生相同的随机数 |
Random类的常用方法
方法声明 | 功能描述 |
---|---|
boolean nextBoolean() | 随机生成boolean类型的随机数 |
double nextDouble() | 随机生成[0.0,1.0]之间double类型的随机数 |
int nextInt() | 随机生成int类型的随机数 |
int nextInt(int n) | 随机生成[0,n)之间int类型的随机数 |
long nextLong() | 随机生成long类型的随机数 |
实例代码
import java.util.Random;
public class Example{
public static void main(String[] args) {
Random random = new Random();
System.out.println("生成boolean类型的随机数:"+random.nextBoolean());
System.out.println("生成double类型的随机数:"+random.nextDouble());
System.out.println("生成int类型的随机数:"+random.nextInt());
System.out.println("生成0~9之间int类型的随机数:"+random.nextInt(10));
System.out.println("生成long类型的随机数:"+random.nextLong());
}
}
作用:把基本数据类型变为类,通过这些类将基本数据类型的值包装为引用数据类型的对象
8种基本数据类型对应的包装类
基本数据类型 | 包装类 | 基本数据类型 | 包装类 |
---|---|---|---|
byte | Byte | float | Float |
short | Short | double | Double |
int | Integer | boolean | Boolean |
long | Long | char | Character |
注意:包装类与对应的数据类型可以直接赋值,不用强制转换。
实例代码
public class Example{
public static void main(String[] args) {
int a = 3;
Integer b = a;
System.out.println( a + b); //6
int c = b;
System.out.println(c); //3
}
}
基本数据类型、包装类与字符串之间的转换:
**parseXxx(String s)与valueof(String s)**注意:
**valueof()**返回包装类对象
实例代码
public class Example{
public static void main(String[] args) {
int num =123;
//1.通过String.valueof()方法将基本类型转化为字符串
String str = String.valueOf(num);
System.out.println("将int变量转化为字符串:"+str);
//2.通过包装类的valueOf()静态方法将基本类型和字符串转化为包装类
String str2 = "520";
Integer integer1 = Integer.valueOf(num);
Integer integer2 = Integer.valueOf(str2);
System.out.println("将int变量转化为包装类:"+integer1);
System.out.println("将字符串变量转化为包装类:"+integer2);
//3.通过包装类的parseXxx()方法将字符串转化为基本数据类型
int num2 = Integer.parseInt(str2);
System.out.println("将字符串转化为int类型"+num2);
//4.通过包装类的toString()方法将包装类转化为字符串
String str3 = Integer.toString(num2);
System.out.println("将int类型转化为字符串"+str3);
}
}
作用:表示日期和时间
Date类的构造方法
方法声明 | 功能描述 |
---|---|
Date() | 创建当前日期时间的Date对象 |
Date(long date) | 创建指定时间的Date对象 |
date参数:自1970年1月1日0时0分0秒以来的毫秒数
即System.currentTimeMillis()
实例代码
import java.util.Date;
public class Example{
public static void main(String[] args) {
Date date = new Date();
Date date1 = new Date(System.currentTimeMillis());
System.out.println(date);
System.out.println(date1);
}
}
Calendar类是抽象类,不可以new 对象
作用:完成日期和时间字段的操作
通过静态方法getInstance()来得到Calendar对象
Calendar calendar = Calendar.getInstance()
Calendar类的常用方法
方法声明 | 功能描述 |
---|---|
int get(int field) | 获取指定日历字段的值 |
void set(int field,int v) | 为指定日历字段设置指定值v |
void add(int field,int a) | 根据日历规则,为指定的日历字段添加字段 |
void set(int year,int month,int day) | 设置Calendar对象的年,月,日 |
void set(int year,int month,int day,int hour,int minute,int second) | 设置Calendar对象的年,月,日,时,分,秒 |
void setLenient(boolean e) | 当e为false时,开启非容错模式,日历规则更严格。 |
Date getTime() | 获取Date对象 |
field为Calendar定义的常量值
Calendar常量 | 含义 |
---|---|
Calender.YEAR | 年 |
Calendar.MONTH | 月(默认值为0) |
Calendar.DATE | 日 |
Calendar.HOUR | 时 |
Calendar.MINUTE | 分 |
Calendar.SECOND | 秒 |
实例代码
public class Example{
public static void main(String[] args) {
Calendar instance = Calendar.getInstance();
int year = instance.get(Calendar.YEAR);
int month = instance.get(Calendar.MONTH)+1;
int day = instance.get(Calendar.DATE);
int hour = instance.get(Calendar.HOUR);
int minute = instance.get(Calendar.MINUTE);
int second = instance.get(Calendar.SECOND);
System.out.println("当前时间为:"+year+"年"+month+"月"+day+"日"+hour+"时"
+minute+"分"+second+"秒");
}
}
DateFormat类是抽象类
作用:将日期格式化成字符串,将特定格式显示的日期字符串转换为Date对象。
DateFormat类的常用方法
方法声明 | 功能描述 |
---|---|
static DateFormat getDateInstance() | 创建默认日期格式器 |
static DateFormat getDateInstance(int style) | 创建style风格的日期格式器 |
static DateFormat getDateTimeInstance() | 创建日期/时间格式器 |
static DateFormat getDateTimeInstance(int dataStyle,int timeStyle) | 创建style风格的日期/时间格式器 |
String format(Date date) | 将Date对象格式化为日期/时间字符串 |
Date parse(String source) | 将字符串解析为Date对象 |
四个静态方法用于获得DateFormat类的实例对象。
参数style的四个常量值
DateFormat常量 | 含义 |
---|---|
DateFormat.FULL | 完整格式 |
DateFormat.LONG | 长格式 |
DateFormat.MEDIUM | 普通格式 |
DateFormat.SHORT | 短格式 |
实例代码
import java.text.DateFormat;
import java.util.Date;
public class Example{
public static void main(String[] args) {
Date date = new Date();
//创建DateFormat对象
DateFormat dateInstance = DateFormat.getDateInstance();
DateFormat fullFormat = DateFormat.getDateInstance(DateFormat.FULL);
DateFormat longFormat = DateFormat.getDateInstance(DateFormat.LONG);
DateFormat mediumFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM);
DateFormat shortFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
System.out.println("默认日期格式器:"+dateInstance.format(date));
System.out.println("完整格式日期格式器:"+fullFormat.format(date));
System.out.println("长格式日期格式器:"+longFormat.format(date));
System.out.println("普通格式日期/时间格式器:"+mediumFormat.format(date));
System.out.println("短格式日期/时间格式器:"+shortFormat.format(date));
}
}
Parse(String source)方法使用实例代码
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;
public class Example{
public static void main(String[] args) throws ParseException {
DateFormat d1 = DateFormat.getDateInstance();
DateFormat d2 = DateFormat.getDateInstance(DateFormat.LONG);
Date date1 = d1.parse("2020年02月3日");
Date date2 = d2.parse("2020年3月4日");
System.out.println(date1);
System.out.println(date2);
}
}
SimpleDateFormat类是DateFormat类的子类,可以使用new关键字创建对象。
作用:取代父类的parse()方法,更好地格式化日期、解析字符串。
常用的格式规则为:
标识字母(区分大小写) | 含义 |
---|---|
y | 年 |
M | 月 |
d | 日 |
H | 时 |
m | 分 |
s | 秒 |
实例代码
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Example{
public static void main(String[] args) throws ParseException {
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("今年yyyy年MM月dd日");
String format = simpleDateFormat.format(date);
System.out.println(format);
}
}