high-level——System类和StringBuilder类(2)

System类

  • system表示系统,因此它包含的一些成员变量与方法和当前jvm及应用程序的执行环境有关。利用该类可以得到与当前执行环境相关的一些参数。System中声明了一个私有的无参的构造方法,我们不能去创建它的对象。
    • 字段:static InputStream in “标准”输入流,表示通过键盘的按键向程序中输入字符的通道。
    • static PrintStream out “标准”输出流,表示通过控制台输出内容的通道。
    • static PrintStream err “标准“错误输出流,也是针对控制台的输出,输出内容是程序编译或执行过程中产生的异常错误,字体颜色为红色。
    • 方法:public static long currentTimeMillis(),返回当前时间(以毫秒为单位)。Date类就是调用该方法来得到当前的日期的。
    • public static void arraycopy(Object src,int srcPos, Object dest,int destPos,int length) 用来复制数组的方法,ArrayList集合类。很多情况下在方法的参数中会使用Object类型的参数,编程中很少去创建Object对象,它主要作为超类使用,java的多态体现出来的就是超类型声明子类型的对象,在运行期该对象依然属于子类型,在编译期该对象属于超类型。如果方法的参数是Object类型的参数,按照多态中类型转换的规则及Object自身的作用,无论什么类型的对象都可以自动转换为Object的类型,因此Object类型的参数所在的位置可以传入任何对象。这种定义方式极大增强了方法的扩展性。
    • public static Properties getProperties() 返回当前系统的属性集。java.runtime.name = Java™ SE Runtime Environment前面是属性名,后面是属性值。
    • public static SecurityManager getSecurityManager() 在高版本的安卓应用中使用比较多,它能够识别当前应用程序的安全级别。
    • public static void exit(int status) 终止当前运行的Java虚拟机。
package com.zhong.test3;

import java.io.IOException;
import java.util.Date;
import java.util.Properties;

public class SystemDemo {
    public static void main(String[] args) throws IOException {
        int i = System.in.read();
        System.out.println(i);
        System.out.println("输出流");
        System.err.println("错误流");

        long date = System.currentTimeMillis();
        //转换为日期对象
        Date dateNow = new Date(date);
        System.out.println(dateNow);

        int[] src = new int[]{1,2,3,4,5,6};
        int[] desc = new int[]{0,7,8,9};
        System.arraycopy(src,0,desc,1,3);
        for (int k : desc) {
            System.out.println(k);
        }

        Properties properties = System.getProperties();
        System.out.println(properties);
    }
}

StringBuilder类

  • String类表示不可变字符串,因为它的类型声明和内部表示字符数组的字段都是final,也就是该类不能被继承,它表示的字符串数据一旦赋值就不能改变了。所以,对String对象的任何改变它内部都会创建一个新的对象,就会大量消耗资源,这种做法不可取。
  • StringBuilder的出现主要就是解决String对象不可变问题。
  • StringBuilder、StringBuffer都是用来表示可变字符串,如果字符串的值经常发生变化,应该使用这两个类之一。StringBuilder是非线程安全的,StringBuffer是线程安全。线程安全的前提是在同一时刻不允许多个线程操作同一个变量。因此线程安全的对象执行起来效率较低。
  • StringBuilder的主要操作就是调用append(各种类型的参数)实现字符串连接。
  • 它还有很多其他的字符串方法进行增删改查操作。
package com.zhong.test3;

public class StringBuilderDemo {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("123");
        System.out.println(sb);
        //最常见的操作就是做字符串连接
        sb.append(2.3).append("xzd").append('1');
        System.out.println(sb);
    }
}

包装类

  • 它的根本设计思想就是把一份要使用的数据用类的对象进行封装,我们需要使用这份数据时,不会直接操作这份数据,而是通过调用对象的方法来实现各种功能。
  • 包装类最典型的设计就是八大基本类型都具有各自的包装类。这些包装类的对象内部都持有与之对应的一份数据。包装类必须提供对数据进行操作的方法,因此基于包装类对基本数据进行操作,会让功能变得更加强大。

装箱与拆箱

  • 在程序设计时,经常会用基本类型或包装类型去表示一份数据,在方法调用或表达书写时,就可能会让这两种类型的数据进行相互转换。
  • java中的装箱就是把一份基本类型的数据转换为包装类型的对象,拆箱就是把包装类型的数据拿出来转换为基本类型的数据。
  • 有了装箱和拆箱,让两种不同性质类型数据的互转变得非常容易且简单,直接。因此在基本类型和包装类型之间的转换可以直接进行赋值,也可以直接进行传参。
  • 包装类型提供了数据类型之间的转换,比如把本类型转化为字符串。比如把字符串转换为基本类型。(parseXXX)
  • 把基本类型或字符串转换为包装类型,valueOf(字符串或基本类型)以后如果需要在不同类型的数据间进行转换,可以利用各种包装类型包括字符串所提供的一些转换操作来完成。
  • 栈区中存在着基本类型数据的常量池,一些常用的数据会保存在常量池中,如果有变量引用了这些数据,其实引用的都是常量池的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Æ_华韵流风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值