沉迷于学习,无法自拔
写这篇博客不知道为什么莫名的心累,哎╮(╯▽╰)╭
目录
1、String
public class Test1 {
public static void main(String[] args) {
// String是个被final和private修饰的String类
String s="ab";
System.out.println(s);
// 这是重新赋值,不是修改
s="xx";
System.out.println(s);
System.out.println("----------");
String s1 = "hello";
String s2 = "hello";
String s3 = new String("hello");
// s1 与 s2存放位置是常量池
System.out.println(s1 == s2);
// new生成两个对象,一个在常量池,一个在堆
// s3 存放位置是堆
System.out.println(s1 == s3);
}
}
public class Test2 {
public static void main(String[] args) {
// 常用方法
byte[] byteArray = {97,98,99};
// 对指定byte数组解码
String s1 = new String(byteArray);
System.out.println(s1);
// 使用一个字符数组构建一个字符串
char[] charArray1 = {'N','B','A'};
String s2 = new String(charArray1);
System.out.println(s2);
// String(char[] value, int offset, int count)
// 偏移值(下标) 长度
char[] charArray2 = {'a','b','c','d','e'};
String s3 = new String(charArray2,2,2);
System.out.println(s3);
System.out.println("----------");
// 获取字符串长度
int length = s3.length();
System.out.println(length);
System.out.println("----------");
// 将字符串转为字符数组
char[] arr = s3.toCharArray();
for (char ch : arr) {
System.out.println(ch);
}
System.out.println("----------");
// 将字符串转为字节数组
byte[] bytes = s2.getBytes();
for (byte b : bytes) {
System.out.println(b);
}
System.out.println("----------");
String s4 = "hello";
// 转为大写字母
String upperCase = s4.toUpperCase();
System.out.println(upperCase);
// 转为小写字母
String lowerCase = upperCase.toLowerCase();
System.out.println(lowerCase);
System.out.println("----------");
// +号用于字符串与任意类型的连接,所有类型都会转为字符串
System.out.println("hello "+10);
System.out.println("----------");
// 去掉字符串两边空格(注意:是两边)
String s5 = " z x x ";
System.out.println(s5.length());
String newString = s5.trim();
System.out.println(newString);
System.out.println(newString.length());
System.out.println("----------");
String s6 = "abc";
String s7 = "ABC";
// 比较字符串内容是否相同
System.out.println(s6.equals(s7));
// 比较字符串内容是否相同,忽略大小写
System.out.println(s6.equalsIgnoreCase(s7));
System.out.println("----------");
String s8 = "ascvfgh";
String s9 = "scvg";
// 判断是否包含
System.out.println(s8.contains(s9));
System.out.println("----------");
String s10 = "asc";
String s11 = "fh";
// 判断是否以……开头
System.out.println(s8.startsWith(s10));
// 判断是否以……结尾
System.out.println(s8.endsWith(s11));
System.out.println("----------");
String s12 = " ";
// 判断是否为空
System.out.println(s12.isEmpty());
System.out.println("----------");
String s13 = "afgtrgteb";
// 获取指定索引的字符
char ch = s13.charAt(5);
System.out.println(ch);
char c = getCharByIndex(s13, 5);
System.out.println(c);
System.out.println("----------");
// 返回指定字符串第一次出现的索引
System.out.println(s13.indexOf('g'));
// 返回指定字符串最后一次出现的索引
System.out.println(s13.lastIndexOf('g'));
// 指定字符串不存在返回-1
System.out.println(s13.indexOf("ah"));
System.out.println(s13.lastIndexOf("gt"));
System.out.println("----------");
String s14 = "abcdscd";
// 用后一个字符串(*)替换前一个字符串(c)
String string = s14.replace('c', '*');
System.out.println(string);
System.out.println("----------");
// 截取子串,包括开始,不包括结尾
string = s14.substring(2,5);
System.out.println(string);
System.out.println("----------");
// 按字典顺序比较两个字符串,返回int类型
String s15 = "abc";
String s16 = "abd";
System.out.println(s15.compareTo(s16));
System.out.println("----------");
// 按指定字符串进行分割
String s17 = "ax-dg-sfd";
String[] array = s17.split("-");
for (String str : array) {
System.out.println(str);
}
System.out.println("----------");
// 将其他类型转换成字符串
int number = 9527;
String str = String.valueOf(number);
System.out.println(str);
double d = 2.3;
str = String.valueOf(d);
System.out.println(str);
System.out.println(String.valueOf(false));
char[] chs = {'n','b','a'};
str = String.valueOf(chs);
System.out.println(str);
}
public static char getCharByIndex(String string,int index) {
char c = ' ';
if(index>=0&&index<string.length()) {
c = string.charAt(index);
}
return c;
}
}
2、StringBuffer
public class Test1 {
public static void main(String[] args) {
// 将参数以字符串形式添加,拼接成字符串
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(69).append(" or ");
stringBuffer.append("hello");
System.out.println(stringBuffer);
// 逆置、交换
stringBuffer.reverse();
System.out.println(stringBuffer);
System.out.println(stringBuffer.toString());
// 截取子串 ps:不会影响原字符串
System.out.println(stringBuffer.substring(2, 4));
// 删除指定位置的字符
StringBuffer str = stringBuffer.deleteCharAt(1);
System.out.println(str);
// 删除一定范围的字符
stringBuffer = new StringBuffer();
stringBuffer.append("abcdef");
StringBuffer delete = stringBuffer.delete(1, 3);
System.out.println(delete);
// 替换,将一定范围的字符进行替换
stringBuffer = new StringBuffer();
stringBuffer.append("abcdef");
stringBuffer.replace(1, 3, "*");
System.out.println(stringBuffer);
// 在指定位置添加新的文本对象
stringBuffer.insert(3, "xx");
System.out.println(stringBuffer);
// 长度
System.out.println(stringBuffer.length());
// 容量(默认缓冲区大小)
System.out.println(stringBuffer.capacity());
// 替换指定位置的字符
stringBuffer.setCharAt(1, 'c');
System.out.println(stringBuffer);
}
}
3、String、StringBuffer、StringBuilder比较
4、包装类
4.1、Integer部分方法
public class Test1 {
public static void main(String[] args) {
// 包装 int->Integer
Integer integer = new Integer(9527);
System.out.println(integer);
// int的取值范围
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
// 字符串转整数
String string = "88";
integer = Integer.valueOf(string);
System.out.println(integer);
System.out.println(integer.intValue());
System.out.println(Integer.parseInt(string));
// 整数转字符串
Integer integer2 = new Integer(9527);
System.out.println(integer2.toString().length());
// 二进制字符串
System.out.println(Integer.toBinaryString(3));
//十六进制字符串
System.out.println(Integer.toHexString(3));
//八进制字符串
System.out.println(Integer.toOctalString(8));
}
}
4.2、Character部分方法
public class Test2 {
public static void main(String[] args) {
Character character = new Character('a');
char ch = character.charValue();
System.out.println(ch);
// 是否是字母
System.out.println(Character.isLetter(ch));
// 是否是数字
System.out.println(Character.isDigit(ch));
// 是否是小写
System.out.println(Character.isLowerCase(ch));
// 是否是大写
System.out.println(Character.isUpperCase(ch));
}
}
4.3、自动装箱与自动拆箱
自动装箱是把一个基本数据类型直接赋给对应的包装类。
自动拆箱是把一个包装类对象直接赋给对应的基本数据类型。
public class Test3 {
public static void main(String[] args) {
Integer i = 1;// 自动装箱
int j = i;// 自动拆箱
}
5、BigDecimal
用于精确的表示和计算浮点数
public class Test2 {
public static void main(String[] args) {
double d1 = 0.1;
double d2 = 0.2;
double d3 = d1 + d2;
System.out.println(d3);
System.out.println("----------");
// BigDecimal 高精度小数
// 推荐:在构造时传入字符串类型的数字
BigDecimal bigDecimal1 = new BigDecimal("0.1");
BigDecimal bigDecimal2 = new BigDecimal("0.2");
// 加、减、乘、除
System.out.println(bigDecimal1.add(bigDecimal2));
System.out.println(bigDecimal1.subtract(bigDecimal2));
System.out.println(bigDecimal1.multiply(bigDecimal2));
System.out.println(bigDecimal1.divide(bigDecimal2));
}
}
6、Math
public class MathDemo {
public static void main(String[] args) {
// 取圆周率
System.out.println(Math.PI);
// 取绝对值
System.out.println(Math.abs(-10));
// 向上取整,结果是double类型
System.out.println(Math.ceil(12.3));
System.out.println(Math.ceil(12.99));
// 向下取整,结果是double类型
System.out.println(Math.floor(12.3));
System.out.println(Math.floor(12.99));
// 取两个值中的最大值
System.out.println(Math.max(23,24));
// 前面的数是底数,后面的数是指数
System.out.println(Math.pow(2, 3));// 2.0^3.0
// 0.0到1.0之间的随机数,[0.0,1.0)
System.out.println(Math.random());
// 四舍五入
System.out.println(Math.round(12.49f));
System.out.println(Math.round(12.9f));
// 开平方
System.out.println(Math.sqrt(4));
System.out.println(Math.sqrt(2));
}
}
7、Runtime
public class Test4 {
public static void main(String[] args) {
// 1970.1.1 0:0:0 到现在的毫秒数
long time = System.currentTimeMillis();
System.out.println(time);
// 拷贝数组
int[] array1 = {1,2,3,4,5};
int[] array2 = new int[array1.length];
// 从array1的下标0开始复制 到array2的小标0开始黏贴 复制的长度
System.arraycopy(array1, 0, array2, 0, array1.length);
for (int i : array2) {
System.out.println(i);
}
// Runtime类主要描述应用程序运行的环境
Runtime runtime = Runtime.getRuntime();
// JVM最大内存容量(单位:字节)
long maxMemory = runtime.maxMemory();
// 可用内存数(单位:字节)
long freeMemory = runtime.freeMemory();
System.out.println(maxMemory);
System.out.println(freeMemory);
}
}
8、日期和时间
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class Test2 {
public static void main(String[] args) {
Date date = new Date();// 当前时间的Date对象
System.out.println(date);
String pattern = "yyyy年MM月dd日 kk时mm分ss秒";
Locale locale = Locale.getDefault();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern,locale);
String time = simpleDateFormat.format(date);
System.out.println(time);
}
}
结果:
Mon Mar 15 21:54:32 CST 2021
2021年03月15日 21时54分32秒
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class Test3 {
public static void main(String[] args) throws ParseException {
String date = "2020年07月20日 15:04:42";
String pattern = "yyyy年MM月dd日 HH:mm:ss";
Locale locale = Locale.getDefault();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern, locale);
Date parse = simpleDateFormat.parse(date);
System.out.println(parse);
}
}
结果:
Mon Jul 20 15:04:42 CST 2020
import java.text.SimpleDateFormat;
import java.util.Locale;
public class Test4 {
public static void main(String[] args) {
String str="1566290810071";
long time = Long.valueOf(str);
System.out.println(time);
String pattern = "yyyy年MM月dd日 HH:mm:ss";
Locale locale = Locale.getDefault();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern, locale);
Long timeLong = new Long(time);
String string = simpleDateFormat.format(timeLong);
System.out.println(string);
}
}
结果:(时间戳转字符串)
1566290810071
2019年08月20日 16:46:50
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class Test4 {
public static void main(String[] args) {
String birthday = "1999-02-20";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd",Locale.getDefault());
Date date = simpleDateFormat.parse(birthday);
System.out.println(date);
long dateTime = date.getTime();
System.out.println(dateTime);
}
}
结果:
Sat Feb 20 00:00:00 CST 1999
919440000000
8.1、趣味题(出生至今多少天了?)
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test7 {
public static void main(String[] args) throws ParseException {
String birthday = "1998-12-07";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = simpleDateFormat.parse(birthday);
long dateTime = date.getTime();
long timeMillis = System.currentTimeMillis();
long time = (timeMillis - dateTime) / 1000 / 60 / 60 / 24;
System.out.println("我已经在地球上已经待了 "+ time +" 天");
}
}
9、枚举
public class Test5 {
// 枚举,注意:枚举要编辑在main函数之前
enum Seaason{
SPRING,SUMMER,FALL,WINTER;
}
public static void main(String[] args) {
System.out.println(Seaason.SPRING);//SPRING
System.out.println(Seaason.WINTER);//WINTER
System.out.println(Seaason.SPRING.ordinal());//0
System.out.println(Seaason.FALL.ordinal());//2
// 枚举在switch的使用
Seaason s = Seaason.SUMMER;
switch (s) {
case SPRING:
System.out.println("春天");
break;
case SUMMER:
System.out.println("夏天");
break;
case FALL:
System.out.println("秋天");
break;
case WINTER:
System.out.println("冬天");
break;
default:
System.out.println("error");
break;
}
}
}
9.1细节
1.枚举是一个类
2.枚举值默认修饰符:public static final
3.枚举类的构造方法默认修饰符:private
4.枚举值必须要位于枚举类的第一个语句