包与java常用类

一、java常用包简介:


包里放的是各种系统类


1、java.lang: java 的核心类库,包含了运行java 程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省加载这个包  

2、java.lang.reflect:提供用于反射对象的工具 

3、java.io: java 语言的标准输入/输出类库,如基本输入/输出流、文件输入/输出等     

4、java.util:常用的工具类,如集合框架类,日期处理类等。

5、java.sql: JDBC 相关类。

6、java.net:JAVA 网络包,其中包含能够使程序通过网络进行通信的 

7、java.awt;javax.swing:使用java 开发C/S 结构应用程序使用的类。 

注意:lang 包中的类可以不用导入而直接使用。如果您以后在项目代码中看到那个类没有导入而没报编译错误,那它要么与当前类在一个包里,要么一定在lang 包中。

二、包装类

1、概念:

前面讲到java 的数据类型分为两种:值类型和引用类型,其中值类型只有8 个,那与此8 个值类型对应的有8 个类,我们把它们称为包装类。如下图所表示:

 基本数据类型 包装类 byte  Byte boolean  Boolean short
 Short char Character int Integer long Long float Float double Double

注意:包装类全部声明在java.lang 包中,上面说过,lang 包中的类不需要导入而直接使用。

2、拆箱与装箱:

拆箱:把数据由包装类转化为基本数据类型叫拆箱

装箱:把数据由基本数据类型转换为对应包装类叫做装箱

如下例:

public class Test { 

  public static void main(String[] args) { 

    int a = 10; 

//自动装箱,基本数据类型-->包装类 

    Integer b = a; 

//自动拆箱,包装类-->基本数据类型 

    int c = b; 

  } 

3、包装类的常用方法:

(1)Character 类的常用方法:

 基本数据类型  包装类  isDigit() 确定字符是否为0 至9 之间的数字  isLetter()  确定字符是否为字母  isLowerCase()  确定字符是否为小写形式  isUpperCase()  确定字符是否为大写形式    

注意:这些方法都是通过类名点方法名访问的,我们称为静态方法,如:Character.isDigit(values[count])

(2)字符串类型变为数字类型:

有两种方法:这您可以使用数字类型对应的valueOf()方法,也可以使用paseXXX()方法,同时valueOf ()与paseXXX ()也是静态方法,通过类名点方法名调用。看一个例子:

public class TestValueOf { 

  public static void main(String[] args) { 

    String number = "12"; 

    System.out.println("没转换前" + (number + 1)); 

    Byte byNum = Byte.valueOf(number); 

    Short shNum = Short.valueOf(number); 

    Integer num = Integer.valueOf(number); 

    Long lgNum = Long.valueOf(number); 

 

    System.out.println("转换后"); 

    System.out.println(byNum + 1); 

    System.out.println(shNum + 1); 

    System.out.println(num + 1); 

    System.out.println(lgNum + 1); 

    System.out.println("使用paseXXX转换:"); 

 

    System.out.println(Integer.parseInt(number) + 1); 

    System.out.println(Float.parseFloat(number) + 1); 

  } 

运行结果是:

没转换前121

转换后

13

13

13

13

使用paseXXX转换:

13

13.0

4、String类

(1).equals():判断两个字符串是否相等

例1:

public static void main(String[] args) { 

    String a = new String("wangwang"); 

    String b = new String("wangwang"); 

    System.out.println("(a == b) = " + (a == b)); 

    System.out.println("(a.equals(b)) = " + a.equals(b)); 

结果: 

(a == b) = false 

(a.equals(b)) = true 

大家看到结果,使用==并不能判断两个字符串的值是否相等,您一定要使用equals(),

关于原因,我们看上例中两个变量的内存分配:

 

==比较的是两个变量是否指向同一块空间,equals()比较的是指向的两个内存空间的值是否相等。所以在java 中,我们做字符串比较要使用equals()方法。

例2:

public static void main(String[] args) { 

    String a = "wangwang"; 

    String b = "wangwang"; 

    String c = new String("wangwang"); 

     

    System.out.println("(a == b) = " + (a == b)); 

    System.out.println("(a == c) = " + (a == c)); 

    System.out.println("(a.equals(b)) = " + a.equals(b)); 

    System.out.println("(a.equals(c)) = " + a.equals(c)); 

}

运行结果:

(a == b) = true 

(a == c) = false 

(a.equals(b)) = true 

(a.equals(c)) = true 

大家发现a==b,也就是说,a 与b 指向同一块内存空间,如图:

这到底是怎么回事儿呢?这就要引入字符串池的概念了。就是说它会把所已知的字符串放入字符串池,如果你创建新字符串没有使用new 关键字,如String b = "wangwang";这行代码,它首先会去字符串池找有没有相同值的字符串,如果有的话就指向它;如果没有的话就会创建新的空间。这里查询时找到了对应的值,所以a 和b 指向了通一块内存空间 35DF。而如果使用了new 关键字,如String c = new String("wangwang");这行代码,它不会去字符串池中寻找而直接创建一份新的内存空间。

(2).length():求字符串长度

(3).trim():去掉字符串两边的空格

 (4).toLowerCase(),.toUpperCase():把字符串全部转换为大写或小写

(5).substring(int a, int b):从a 开始截取(b-a)个字符

(6)indexOf(String target):查找target 在字符串中第一次出现的位置,注意下标是从0开始,如没出现返回-1。

(7)indexOf(int a, String target):从a 的位置开始,查找target 在字符串中第一次出现的位置,注意下标是从0 开始,如没出现返回-1。 

(8)lastIndexOf(String target) :查找target 在字符串中最后一次出现的位置,如没出现返回-1。 

(9)charAt(int a):返回字符串a 位置的字符,如果越界的话报java.lang.StringIndexOutOfBoundsException 异常。

(10)replace(String a, String b):把字符串中的a 替换为b。

(11)rplit(String a):把字符串按照其中出现的字符a 拆分为一个数组。

5、StringBuffer类

我们用两个例子对比一下说明他的用法及优越性

代码1:

String msg = “犀利哥与”; 

if(凤姐在) 

msg +=”凤姐”; 

if(芙蓉姐姐在) 

msg +=”芙蓉姐姐”; 

msg += “去春游”; 

System.out.println(msg); 

如果凤姐和芙蓉姐姐都在的话,内存变化为:

 

那么35DF 到37DF的空间不就浪费了嘛!

代码2:

StringBuffer msg = new StringBuffer(“犀

if(凤姐在) 

msg.append(”凤姐”); 

if(芙蓉姐姐在) 

msg.append(”芙蓉姐姐”); 

msg.append(“去春游”); 

System.out.println(msg); 

上面当创建StringBuffer 对象时系统默认分配一定长度的内存,使用append 方法往其中放入字符串,如果放入的字符串超出内存的范围,那么它会自动在其后追加一倍长度的内存,这样前面的内存就可以继续使用,没有浪费。最后使用toString()方法转化为字符串。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值