system类:
三个属性:
1、system.in代表标准输入流——往往特指控制台输入
1.1、用法:new Scanner(System.in)
2、system.out代表当前系统提供的标准输出流--往往指代控制台输出
3、System.err.println();默认情况也是指控制台输出(红色警示,表示当前系统提供的错误流--也是指代控制台输出)
常用方法:
1、System.gc()召唤垃圾回收,强调:不是操控,只能是召唤
2、System.arraycopy();完成数组拷贝动作
3、System.exit(0);完成虚拟机的关闭---参数表示结束的状态码,非0表示异常结束
4、System.currentTimeMillis();返回当前系统的时间(long类型)
--1970到当前毫秒数--1s=1000ms
5、System.getProperty();获取系统信息
file.separator---文件分割符
runtime类:
常用方法:
1、getRuntime();获得与当前系统绑定的运行对象
----.totalMemory()当前内存数
----.freeMemory()当前空闲内存
----.availableProcessors()当前处理器数量
String类:
是java中表示字符串的一种类型,使用的最多的一种。所以的输入输出都是针对字符串,类型的转换是程序内部的需要;java中有许多针对他的特殊设计。
---1、string语法上,他是惟一一个可以直接赋常量值的引用数据类型
---2、String字符串常量在内存中有特殊处理:
---2.1、String字符串常量是对象;
---2.2、String字符串常量在加载器即放入内存中(数据段的字符串常量池中)
---3、String对象内容不可变,对String对象做任何内容改变都是得到一个新的String对象
---4、String提供了非常丰富的API(非常熟练)
---4.1、String与数组相关的操作String str = “hello ”;
---4.1.1、char[] array = str.toCharArray();//转换为字符串
---4.1.2、str.length();//得到字符串长度
---4.1.3、char c = str.charAt(0);//根据下标得到字符串的第几个字符
---4.1.4、str.indexOf();//根据下标得到String中首次出现的位置,没有返回-1;
---4.1.5、str.lastIndexOf();//根据下标得到String中最后一次次出现的位置,没有返回-1;
---4.1.6、str.subString(1, 3);//根据位置截取子串
---4.1.7、str.subString(2);//重载,只给起始位置,截取到最后
---4.2、String比较操作相关//其实字符串也有比较大小的特点,比如比较大小的顺序,使用的是字典顺序
---4.2.1、System.out.println("hello".equals(str));
---4.2.2、System.out.println("hello".equalsIgnoreCase(str));//忽略大小写比较相等
---4.2.3、System.out.println(str。compareTo(“abc”));//第一位比较ASCII,比完之后完全一样,再比较长度。A、结果是第一个字符串减去第二个字符串的差值,正大负小,每个字符一样,长度也一样则返回0;
---4.2.4、System.out.println(str.compareToIgnoreCase(“abc”));
忽略大小写比较
---4-3、与String相关的内容
---4.3.1、str.toUpperCase();把String转全大写
---4.3.2、str.toLowerCase();把String转全小写
---4.3.3、str.replace(‘l’, ‘L’);
//替换字符串中的某个字符全部替换;
//替换字符串中的某个字符串为另一个字符串
---4.3.4、str.replaveAll("l[od]", "ggg");//根据正则表达式替换
---4.3.5、String hi=“hello”.concat(“hhh”);拼接字符串
---4.3.6、hi.contains(“hff”);//查看一个String是否在另一个字符串中;
---4.4、3个特殊方法
---4.4.1、trim();去掉字符串前后的空格
---4.4.2、matches();---正则表达式比较
---4.4.3、split();---字符串拆分。(特性:如果以分隔符开头,会正常拆分,如果以分隔符结尾不会拆分)(分隔符可以用正则表达式拆分)
String b=“--1992-2-1-”;
String[] strArray = b。split(“-”);//数组长度为5,前面2,后面0)
正则表达式(regex):
用来规定一个字符串样式的模板,其本身也是字符串的形式。
1、[ ]表示一个字符,里面填上这个字符所允许的符号
2、{ }表示次数,表示前面表达式重复的次数
---{m,n}表示最少出现次,最多n次
---{m,}至少m次
---{m}只能出现m次
3、()表示可选(表达式1|表达式2|表达式3)三选一都是对的
StringBuilder: 解决String内容不可变的问题,当需要操作大量的字符串拼接的时候,String就会对性能产生影响,由此提出StringBuilder:也是jdk中提供的字符串类型,专门用来解决内容不可变的问题。它语句String没有任何继承关系
Stringbuilder sb = new StringBuilder(“hello”);
1、append();//在尾部进行拼接
2、insert(位置,“内容”);插入
使用:当我们做大量的String拼接的时候会出现性能的消耗(String内容不可变),可条用StringBuilder的append()或insert()方法进行
StringBuffer:也跟StringBuilder一样,内容可变,用来解决问题一样
区别:StringBuilder是线程不安全的(线程不安全,没有使用线程同步工作,所以效率高)
StringBuffer是线程安全的(凡是线程安全的,由于同步工作导致效率低)
不是说多线程就要考虑到线程安全的,因此就需要考虑效率了;
线程安全只会在多线程特殊情况下实现。所以没有安全问题的多线程情况或单线程情况优先使用StringBuilder
包装类:用来基本数据类型,提供了大量属性和行为
操作;基本类型<——>包装类对象<——>String<——>基本类型