//1. 包装类
//=======================装箱与拆箱=======================
//java语言特性: 面向对象
//为了承诺java中一切皆为对象,八大基本类型需要有对应的包装类的类型,
//包装类是一个引用类型,具备了面向对象的特点
//int--->Integer
//char-->Character
//其余只需首字母大写就变成了包装类
//基本类型与包装类的转换
public class Test1 {
public static void main(String[] args) {
//------装箱:基本类型转包装类-------
int a = 3;
Integer integer = new Integer(a); //构造器方式
integer = Integer.valueOf(a); //静态方法方式
System.out.println(integer); //Integer重写了toString
//-------拆箱:包装类转基本类型--------
a = integer.intValue();
System.out.println(a);
//---------自动装箱------------
Integer integer2 = a;
int b = integer2; //自动拆箱
//注意:自动装箱和拆箱的本质依然需要通过手动装箱和拆箱,只不过系统帮我们做了
//查看反编译工具
//其他类型与数字字符串的操作
//1.其他类型转字符串
String s = integer2+"";
//2.字符串转基本类型
int c = Integer.parseInt(s);
double d = Double.parseDouble(s);
//3.字符串转包装类型
Integer integer3 = new Integer(s);
}
}
//==========================包装类的用法=========================
//包装类的用法
public class Test2 {
public static void main(String[] args) {
Integer integer = new Integer(10);
Integer integer2 = new Integer(10);
System.out.println(integer==integer2); //false 比较地址
//valueOf:传入的参数为-128~127之间,那么预先给定了空间;所以每次传的值一致,则是同一个地址
Integer integer3 = Integer.valueOf(10);
Integer integer4 = Integer.valueOf(10);
System.out.println(integer3==integer4); //true
Integer integer5 = Integer.valueOf(300);
Integer integer6 = Integer.valueOf(300);
System.out.println(integer5==integer6); //false
}
}
//2. String类(重点)
//====================String的创建===================
//字符串类的创建:
public class CreateTest {
public static void main(String[] args) {
String a = "hello"; //直接赋值创建对象
String aa = "hello";
System.out.println(a==aa); //true
String b = new String("hello");
String bb = new String("hello");
System.out.println(b==bb); //false
//一般比较字符串相同,使用equals--比较内容
System.out.println(b.equals(bb)); //true
}
}
//====================String的常用方法===================
//String类: 不可变字符串
//不可变字符串:调用任何方法,不会改变原对象的值
public class MethodTest {
public static void main(String[] args) {
String a = "hello";
System.out.println(a.charAt(0)); //获取该下标的字符,下标从0开始
String b = a.concat("world"); //字符串拼接--helloworld
System.out.println(b); //hello
System.out.println(a.contains("hel")); //是否包含子串
char[] c = a.toCharArray(); //将字符串转字符数组返回
System.out.println(Arrays.toString(c));
System.out.println(a.length()); //求长度
System.out.println(a.indexOf("ll")); //根据传入的子串,得到下标
System.out.println(a.toUpperCase()); //小写转大写
System.out.println(a.startsWith("h")); //true
System.out.println(a.startsWith("hello")); //true
System.out.println(" h e ".trim()); //去除左右空格
String d = "暴力的黄色小说,很暴力";
//replace:完全匹配的替换
System.out.println(d.replace("暴力", "xx")); //
//replaceAll:正则表达式替换,可以完全匹配也可以按规则;
//例如: 手机号替换;规则:1开头,长度11,必须都数字 dd13833388833ff
System.out.println(d.replaceAll("暴力", "xx")); //
String[] dd = d.split(","); //按某个字符串进行分割,返回字符串数组
System.out.println(Arrays.toString(dd));
System.out.println(a.substring(1)); //从下标1开始提取子串到最后
System.out.println(a.subSequence(1, 3)); //包括起始下标,不包括终止下标
}
}
//3. 可变字符串(重点)
//可变字符串(StringBuffer、StringBuilder)
//调用任何方法,可以改变原对象的值
//有了不可变字符串,为什么需要可变字符串? 提升性能
//StringBuffer、StringBuilder区别(扩展先了解)
//在使用上都是一样的,只是StringBuffer加了锁,更安全,性能低;
//StringBuilder没加锁,不安全,性能高
//应用场景:
//在单线程(一条执行通道)中倾向用StringBuilder,性能更好,因为不存在不安全的情况
//在多线程中倾向用StringBuffer,考虑安全为主
public class Test1 {
public static void main(String[] args) {
//可变字符串的创建
StringBuilder sb = new StringBuilder("hello");
//StringBuilder sb2 = "dd"; //注意:不能直接赋值字符串
sb.append("world"); //字符串追加
System.out.println(sb);
//StringBuilder与String性能PK---通过反编译工具查看
long start = System.currentTimeMillis();
//String a = "";
for(int i=0;i<10000;i++) {
//a += i;
sb.append(i);
}
System.out.println(System.currentTimeMillis()-start);
System.out.println(sb.toString()); //转字符串返回
//System.out.println(sb.reverse()); //字符串反转
System.out.println(sb.delete(3, 6)); //删除指定起始下标和终止下标字符串,不包括终止下标
}
}
//4. BigInteger与BigDecimal
//4.1 BigDecimal(重点)
//BigDecimal:用于存储比double更精确的值
public class BigDecimailTest {
public static void main(String[] args) {
double a = 0.1;
double b = 0.09;
System.out.println(a-b);
BigDecimal big1 = new BigDecimal("0.1");
BigDecimal big2 = new BigDecimal("0.09");
System.out.println(big1.subtract(big2)); //减法
System.out.println(big1.add(big2)); //加法
System.out.println(big1.multiply(big2)); //乘法
//1.1111111111111
//注意:除法有除不尽的情况,一定后面再加2个参数; 1.保留几位 2.取值模式
//除法取值模式:有向上取,向下取,四舍五入
System.out.println(big1.divide(big2, 2, BigDecimal.ROUND_HALF_UP)); //除法
}
}
//4.2 BigInteger
//扩展了解:BigInteger比int存储的值更大
public class BigIntegerTest {
public static void main(String[] args) {
System.out.println(Integer.MAX_VALUE); //2147483647
System.out.println(Integer.MAX_VALUE+1); //-2147483648
BigInteger big1 = new BigInteger(Integer.MAX_VALUE+"");//21474836471
BigInteger big2 = new BigInteger("1");
System.out.println(big1.add(big2)); //2147483648
}
}
//5.Math与Random
//5.1 Math类
//Math类: 数据的工具类 ,里面提供了很多数学计算方面的静态方法
public class MathTest {
public static void main(String[] args) {
System.out.println(Math.ceil(1.2)); //2.0 向上取整
System.out.println(Math.ceil(1.8)); //2.0
System.out.println(Math.floor(1.2)); //1.0 向下取整
System.out.println(Math.floor(1.8)); //1.0
System.out.println(Math.round(1.2)); //1 四舍五入
System.out.println(Math.round(1.8)); //2
//Math.random()---0.0~1.0之间,不包括1.0
//案例:随机出来75~100的数
int num =(int)(Math.random()*26)+75;
System.out.println(num);
}
}
//5.2 Random类
//Random类: 专业求随机数的类
public class RandomTest {
public static void main(String[] args) {
Random random = new Random(); //真随机
//Random random = new Random(2); //伪随机
//根据传入参数进行随机:例如 5--0到4之间随机
for(int i=0;i<5;i++) {
System.out.print(random.nextInt(5)+"\t");
}
//案例:随机出来75~100的数
int num = random.nextInt(26)+75;
System.out.println(num);
}
}
//6. 日期类
//6.1 Date类(重点)
//Date类: 日期类
//打印日期为格林威治时间格式
public class DateTest {
public static void main(String[] args) {
Date date = new Date();
System.out.println(date);
System.out.println(date.getTime());
//Date date2 = new Date(1000); //从1970年开始+1秒
Date date2 = new Date(date.getTime());
System.out.println(date2);
}
}
//6.2 日历类
//日历类: abstract抽象类 用于求时间的类
public class CalendarTest {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
//System.out.println(Calendar.YEAR); //2021?
System.out.println(calendar.get(Calendar.YEAR)); //2021
System.out.println(calendar.get(Calendar.MONTH)+1); //10 0~11代表月份
System.out.println(calendar.get(Calendar.DAY_OF_MONTH)); //27
calendar.set(calendar.YEAR, 2000); //设置年份
System.out.println(calendar.get(Calendar.YEAR)); //2000
calendar.add(Calendar.YEAR, 20); //给年份增加数量
System.out.println(calendar.get(Calendar.YEAR)); //2020
}
}
//6.3 日期格式类
//SimpleDateFormat:带格式的日期类---配合Date使用
public class SimpleDateFormatTest {
public static void main(String[] args) throws ParseException {
//实例化日期格式类,传入日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//传入Date--->转字符串输出
System.out.println(sdf.format(new Date()));
String strDate = "2009-08-09 08:10:08";
//传入字符串-->根据日期格式返回Date对象
Date date = sdf.parse(strDate);
System.out.println(date);
}
}
//7. System类
//System类: 系统类,用于进行系统操作的工具类---静态方法
public class Test1 {
public static void main(String[] args) {
//System.exit(0); //退出
int[] a = {1,3,5};
int[] b = new int[a.length+3]; //扩容输入
System.arraycopy(a, 0, b, 0, a.length);
System.out.println(Arrays.toString(b));
//获取系统的属性对象:键值对形式出现的
Properties properties = System.getProperties();
System.out.println(properties); //{key=value,key2=value,,,}
System.out.println("========================");
//可以根据key获取value,key往往为已知且是字符串形式
System.out.println(properties.getProperty("sun.boot.library.path"));
}
}
Java程序猿必学第十三篇——常用类
猜你喜欢
转载自blog.csdn.net/m0_62718093/article/details/120999000
今日推荐
周排行