java SE 基础精华之深入javaAPI
编程技术  /  houtizong 发布于 3年前   79
1 JAVA SE
1.1 深入JAVA API
1.1.1 Lang包
位于java.lang包中,这个包中的类使用时不用导入。
String类一旦初始化就不可以改变,而stringbuffer则可以。它用于封装内容可变的字符串。它可以使用tostring()转换成string字符串。
String x=”a”+4+”c”编译时等效于String x=new StringBuffer().append(“a”).append(4).append(“c”).toString();
字符串常量是一种特殊的匿名对象,String s1=”hello”;String s2=”hello”;则s1==s2;因为他们指向同一个匿名对象。
如果String s1=new String(“hello”);String s2=new String(“hello”);则s1!=s2;
/*逐行读取键盘输入,直到输入为“bye”时,结束程序 注:对于回车换行,在windows下面,有'\r'和'\n'两个,而unix下面只有'\n',但是写程序的时候都要把他区分开*/public class Readline {public static void main(String args[]) {String strInfo = null;int pos = 0;byte[] buf = new byte[1024];// 定义一个数组,存放换行前的各个字符int ch = 0; // 存放读入的字符System.out.println("Please input a string:");while (true) {try {ch = System.in.read(); // 该方法每次读入一个字节的内容到ch变量中。} catch (Exception e) {}switch (ch) {case '\r': // 回车时,不进行处理break;case '\n': // 换行时,将数组总的内容放进字符串中strInfo = new String(buf, 0, pos); // 该方法将数组中从第0个开始,到第pos个结束存入字符串。if (strInfo.equals("bye")) // 如果该字符串内容为bye,则退出程序。{return;} else // 如果不为bye,则输出,并且竟pos置为0,准备下次存入。{System.out.println(strInfo);pos = 0;break;}default:buf[pos++] = (byte) ch; // 如果不是回车,换行,则将读取的数据存入数组中。}}}}
String类的常用成员方法
1、 构造方法:
String(byte[] byte,int offset,int length);这个在上面已经用到。
2、 equalsIgnoreCase:忽略大小写的比较,上例中如果您输入的是BYE,则不会退出,因为大小写不同,但是如果使用这个方法,则会退出。
3、 indexOf(int ch);返回字符ch在字符串中首次出现的位置
4、 substring(int benginIndex);
5、 substring(int beginIndex,int endIndex);
返回字符串的子字符串,4返回从benginindex位置开始到结束的子字符串,5返回beginindex和endindex-1之间的子字符串。
基本数据类型包装类的作用是:将基本的数据类型包装成对象。因为有些方法不可以直接处理基本数据类型,只能处理对象,例如vector的add方法,参数就只能是对象。这时就需要使用他们的包装类将他们包装成对象。
/** * 例:在屏幕上打印出一个*组成的矩形,矩形的宽度和高度通过启动程序时传递给main()方法的参数指定。 * * @author administrator * */public class Rectangular {public static void main(String[] args) {int length = new Integer(args[0]).intValue();int width = Integer.parseInt(args[1]);// int width = Integer.valueOf(args[1]).intValue();// 以上为三种将字符串转换成整形的方法。System.out.println("lenght:" + length + "\nwidth:" + width);for (int i = 0; i < width; i++) {StringBuffer sb = new StringBuffer(); // 使用stringbuffer,是因为它是可追加的。for (int j = 0; j < length; j++) {sb.append('*');}System.out.println(sb.toString()); // 在打印之前,要将stringbuffer转化为string类型。}}}
比较下面两段代码的执行效率:
//1.String sb = new String();for (int j = 0; j < width; j++) {sb = sb + '*';}//2.StringBuffer sb = new StringBuffer();for (int j = 0; j < width; j++) {sb.append('*');}
(1) (1)和(2)在运行结果上相同,但效率相差很多。
(1) 在每一次循环中,都要先将string类型转换为stringbuffer类型,然后将‘*’追加进去,然后再调用tostring()方法,转换为string类型,效率很低。
(2) 在没次循环中,都只是调用原来的那个stringbuffer对象,没有创建新的对象,所以效率比较高。
System类与Runtime类:
由于java不支持全局函数和全局变量,所以java设计者将一些与系统相关的重要函数和变量放在system类中。
我们不能直接创建runtime的实例,只能通过runtime.getruntime()静态方法来获得。
/** * 在java程序中启动一个windows记事本程序的运行实例,并在该运行实例中打开该运行程序的源文件,启动的记事本程序5秒后关闭。 * * @author administrator * */public class Property {public static void main(String[] args) {Process p = null;try {p = Runtime.getRuntime().exec("notepad.exe Property.java");} catch (Exception e) {System.out.println(e);}try {Thread.sleep(5000);} catch (InterruptedException e) {e.printStackTrace();}p.destroy();}}
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成
网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];
文章归档
文章标签
友情链接