JAVA-6 java.lang包

在JDK安装目录下可以找到java.lang包下的所有源码;JAVA工程默认加入了此包。
下图展示lang包下的内容。
这里写图片描述
以下是百度百科的描述:

提供利用 Java 编程语言进行程序设计的基础类。最重要的类是 Object(它是类层次结构的根)和 Class(它的实例表示正在运行的应用程序中的类)。
把基本类型的值当成一个对象来表示通常很有必要。包装器类 Boolean、Character、Integer、Long、Float 和 Double 就是用于这个目的。例如,一个 Double 类型的对象包含了一个类型为 double 的字段,这表示如果引用某个值,则可以将该值存储在引用类型的变量中。这些类还提供了大量用于转换基值的方法,并支持一些标准方法,比如 equals 和 hashCode。Void 类是一个非实例化的类,它保持一个对表示基本类型 void 的 Class 对象的引用。
类 Math 提供了常用的数学函数,比如正弦、余弦和平方根。类似地,类 String 和 StringBuffer 提供了常用的字符串操作。
类 ClassLoader、Process、Runtime、SecurityManager 和 System 提供了管理类的动态加载、外部进程创建、主机环境查询(比如时间)和安全策略实施等“系统操作”。
类 Throwable 包含了可能由 throw 语句抛出的对象(§14.16)。Throwable 的子类表示错误和异常。

接下来重点记录三个内容:包装类与基本数据类型;String;Math。

  1. 包装类与基本数据类型
    以前一直搞不清 int与Integer,float与Float,double与Double这些有什么关系,如果二者功能一样,那为什么要做两套呢?
    经过老师的讲解才知道,int是基本数据类型,而Integer是包装类,之所以要这么做是因为我们在进行网络传输时,网路中只能传递字符/字符串,而不能直接传输一个对象或者其他数据类型,如果我们需要传输除了字符串外的类型,需要先将其转成字符串,到达目的地以后,再把字符串还原为原来那个类型。
    举例,如果我们要传输int=10:
    int i=10;
    //int转string
    String x=Integer.toString(i);
    //string转int
    int j=Integer.parseInt(x);

其他转换:

    //float转string
    float f=1.9f;
    String fs=Float.toString(f);
    //string转float
    float s=Float.parseFloat(fs);

    //基本数据转包装类
    int k=1;
    Integer integer=new Integer(k);
    //包装类转基本数据
    int yy=integer.intValue();

    //string转包装类
    String cc="90";
    //在API文档找返回值和参数对应的方法
    Integer integer2=Integer.getInteger(cc);

2. String类
相对于Integer等其他包装类,String比较特殊;

public class StringTest {
/**
 1. ==比较的是栈中的值是否相等,多用于基本数据类型的比较
 2. 如果是用在两个对象之间,那么比较的就是这两个对象的地址,即是不是同一个对象
 3. 而我们比较对象时 希望比较对象中的内容,采用方法是equals
 4. @param args
 */
    public static void main(String[] args) {
        //String独有的特色
        String s1="abd";
        String s2="abd";
        //s1 和 s2内容相同,为了节省空间,在已经有s1之后,s2会指向s1的那个空间,
        //他们两内容一样,所以共享一个内存空间
        //使用String时不要new,因为new无论在任何情况下都会新开辟一块内存
        System.out.println(s1.equals(s2));
        //当其中一个内容修改了,才会另外开辟一块来放
        s2="abdc";
        System.out.println(s1);

        //这种做法要不得,因为每循环一次,jvm就会新开一块内存来放置叠加结果,
        //所以会造成内存极大浪费
        for(int i = 0;i<1000;i++)
        {
            s1=s1+"h";
        }
        //正确做法:stringBuffer在堆中,有不变性
        //所以拼接操作采用这种方式
        StringBuffer stringBuffer=new StringBuffer(s1);
        for(int i = 0;i<1000;i++)
        {
            stringBuffer.append("h");
        }
        //字符串长度
        System.out.println(s1.length());
        //比较两个字符串是否相等,默认区分大小写
        System.out.println(s1.equals(s2));
        //忽略区分大小写:比如验证码
        System.out.println(s1.equalsIgnoreCase(s2));
        //根据索引取值
        System.out.println(s1.charAt(2));
        //取出字符第一次出现的位置,如果找不到则返回-1
        System.out.println(s1.indexOf("a"));
        //截取字符串中一部分:包含0但不包含1 半开半闭区间
        System.out.println(s1.substring(0, 1)); 

3. Math
这个用到的时候可以去查API文档,但是要注意的是,在使用Random产生a到b之间的随机数时,只包a不包b,也就是说这是一个做闭右开区间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值