当前位置:文档之家› java常用类库

java常用类库

java常用类库
java常用类库

java 常用类库【学习心得】

【StringBuffer 类】

StringBuffer 类本身是带缓冲区的,也是操作字符串的。与String 类不同的是:String 类中的内容一旦声明则不可改变,改变的仅仅是内存地址的指向,而StringBuffer 中的内容是可以改变的。

对于StringBuffer 类而言,本身是一个操作类,不能像String 那样直接赋值进行对象的实例化,必须通过构造方法(new )完成。

StringBuffer 中采用append ()方法进行字符串的连接,而String 中使用“+”进行字符串的连接。

StringBuffer 类中的常用方法:

public StringBuffer append (boolean b)——串尾追加。StringBuffer 类中重载了很多append 方法,包括int 、float 、String 、char 、Object 等等。此外append ()方法的返回值是StringBuffer 所以可以连续使用。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 public class StringBufferDemo01 {

public static void main(String[] args) {

StringBuffer sb = new StringBuffer();

/* 向StringBuffer 中添加内容 */

sb.append("http://");

sb.append("www.").append("imooc").append(".com");

sb.append("\n").append("添加数字:").append(123);

sb.append("\n 添加字符:").append('Q');

sb.append("\n 布尔值:").append(true );

System.out.println(sb);

}

}

运行结果:

https://www.doczj.com/doc/e27123387.html,

添加数字:123

添加字符:Q

布尔值:true

StringBuffer 中的内容可以通过引用传递的方式改变,而String 中的内容不能通过引用传递进行改变。

至于为什么String 中的内容不可改变,详见:java 中的一些概念总结——java 引用传递及其应用。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 public class StringBufferDemo02 {

public static void main(String[] args) {

StringBuffer sb = new StringBuffer();

sb.append("http://");

changeStringBuffer(sb);

// StringBuffer 中的内容已经被改变了

System.out.println(sb);

String str = "中国";

changeString(str);

System.out.println(str);

}

public static void changeStringBuffer(StringBuffer sb) { // 接收StringBuffer 的引用

sb.append("www.").append("imooc").append(".com"); // 修改StringBuffer 的内容

}

public static void changeString(String str) { // 通过引用传递的方式并没有改变字符串

str = "China"; } }

程序的运行结果:

https://www.doczj.com/doc/e27123387.html,

中国

从以上结果可以看出StringBuffer 中存储的内容改变了,而String 中的内容并没有被改变。

public StringBuffer insert (int offset,boolean b)——在任意位置进行插入(offset 的取值0~length )。同样该方法也被重载了很多次。 1 2 3 4 5 6 7 8 StringBuffer sb = new StringBuffer();

sb.append("中国");

sb.insert(1, "T"); //在1位置添加

System.out.println(sb);

/*在最后添加*/

sb.insert(sb.length(), " imooc"); System.out.println(sb);

运行结果:

T 中国

T 中国 imooc

public StringBuffer reverse ()——字符串反转(逆序)

1 2 3 4 StringBuffer sb = new StringBuffer();

sb.append("中国");

sb.reverse();

5 System.out.println(sb); 运行结果:

国中

public StringBuffer replace (int start, int end,String str)——使用给定 String 中的字符替换此序列的子字符串中的字符。start - 起始索引(包含)。end - 结束索引(不包含)。 1 2 3 4 StringBuffer sb = new StringBuffer();

sb.append("imooc");

sb.replace(1, 3, "中国"); System.out.println(sb);

运行结果:

i 中国oc

public String substring (int start)——返回一个新的 String ,它包含此字符序列当前所包含的字符子序列。该子字符串始于指定索引处的字符,一直到此字符串末

尾。 1 2 3 4 StringBuffer sb = new StringBuffer();

sb.append("http://").append("www.").append("imooc").append(".co m");

String str = sb.substring(7);

System.out.println(str);

运行结果:

https://www.doczj.com/doc/e27123387.html,

public int indexOf (String str)——第一次出现的指定子字符串在该字符串中的索引。

1 2 3 4 5 6 7 StringBuffer sb = new StringBuffer();

sb.append("hello imooc.");

/*查找*/

if (sb.indexOf("hello")!=-1) {

System.out.println("找到hello");

}

运行结果:

找到hello

public StringBuffer delete (int start,int end)——移除此序列的子字符串中的字符。star t - 起始索引(包含)。end - 结束索引(不包含)。如果 start 等于 end ,则不发生任何更改。 1 2 3 4 5 6 StringBuffer sb = new StringBuffer();

sb.append("hello imooc.");

/*字符串截取*/

sb.delete(0, 6);

System.out.println(sb);

运行结果:

imooc.

凡是需要频繁修改字符串内容的时候都应该使用StringBuffer 类。 1 2 3 4 5 6 7 8 public class StringBufferDemo {

public static void main(String[] args) {

String str = "hello";

for (int i = 0; i < 100; i++) {

str += i; // 不断修改String 的内存引用,性能低

}

System.out.println(str);

9 10 11 12 13 14 15 16 17 18 19

/* 以上的代码因为要频繁修改String 的内存引用肯定不合理,使用

Stringbuffer */

StringBuffer sb = new StringBuffer();

sb.append("hello");

for (int i = 0; i < 100; i++) {

sb.append(i);

// 性能高很多

}

System.out.println(sb);

}

}

如果直接使用String 类,则需要断开连接建立连接100次,产生大量垃圾,系统开销大,此时使用StringBuffer 就会很高效。详细的内存使用情况请看下面的帖子【Runtime 类】

。 2014-12-29

JAVA

1554 浏览11 回答

最佳回答

2015-01-01

好专业好专业~~

Converse 丶

回复 0

_潇潇暮雨 (提问者)

非常感谢!

#12015-01-01 回复

_潇潇暮雨 (提问者)

从java 5.0开始,我们应该使用StringBuilder 取代StringBuffer 除非这些操作才不常见的Thr ead 安全中进行。

#22015-01-31 回复

_潇潇暮雨

【Runtime 类】

Runtime 是运行时,是一个封装了JVM 进程的类,每一个java 程序实际

上都是启动了一个JVM 进程,每一个JVM 进程都是对应一个Runtime 实

例,此实例是由JVM 为其实例化的。

在API 中Runtime 类没有构造方法,因为这个类的构造方法被私有化了

(Singleton ),使用

public static Runtime getRuntime ()静态方法可以返回一个Runtime 实

例,取得一个Runtime 实例后就可以使用下面的方法:

得到JVM 信息: 1 2 3 4 5 6 7 8 9 10 1public class RuntimeDemo01 {

public static void main(String[] args) {

Runtime runtime = Runtime.getRuntime(); //通过Runtime 的静态方法取得Runtime 实例

System.out.println("JVM 的最大内存:"+runtime.maxMemory() + "字节"); //根据机器的不同而不同(字节)

System.out.println("JVM 的空闲内存:" + runtime.freeMemory()+ "字节"); //空闲内存

String str = "http"+":"+"//" + "www" + "." + "imooc" + "." + "c om" + "^" + "-" + "^";

1 1

2 1

3 1

4 1

5 1

6 1

7 1

8 1

9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 for(int i = 0;i < 10000;i++){

str += i; //循环修改内容,产生很多的垃圾

}

System.out.println("操作String之后,JVM的空闲内存是:

" + runtime.freeMemory() + "字节");

runtime.gc(); //垃圾收集,释放空间

System.out.println("垃圾回收之后,JVM空闲内存:

" + runtime.freeMemory());

StringBuffer stringBuffer = new StringBuffer();

stringBuffer.append("http").append(":").append("//").append("ww w.").append("imooc").append("com").append("^").append("-").append("^");

for (int i = 0; i < 10000; i++) {

stringBuffer.append(i);

}

System.out.println("进行StringBuffer操作后,JVM空闲内存:

" + runtime.freeMemory());

}

}

运行结果:

JVM的最大内存:259522560字节

JVM的空闲内存:15635296字节

操作String之后,JVM的空闲内存是:14076328字节

垃圾回收之后,JVM空闲内存:15853560

进行StringBuffer 操作后,JVM 空闲内存:15559152

进行String 操作花掉的内存:15635296 - 14076328 = 1,558,96

8字节

进行StringBuffer 花掉的内存:15853560 - 15559152 = 294,408

字节

从此处可以看出进行大量的字符串的操作的时候用StringBuffer 效率会更

高。

Runtime 与Process 类

可以直接使用Runtime 类调用本机的可执行程序,例如:画图、记事本

等。

public Process exec (String command)throws IOException 1 2 3 4 5 6 7 8 9 10 11 12 public class RuntimeDemo02 {

public static void main(String[] args) {

Runtime runtime = Runtime.getRuntime();

try {

runtime.exec("mspaint.exe");

} catch (IOException e) {

e.printStackTrace();

}

}

}

运行以上程序,将会打开一个画图程序。如果要想实现打开画图程序后5

秒钟后自动关闭,就必须要操作进程了。

exec ()方法的返回值是Process 类的实例,Process 类是表示进程的

一个操作类,可以通过该类的destroy()方法销毁一个进程。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 import

java.io.IOException;

public class RuntimeDemo03 {

public static void main(String[] args) {

Runtime runtime = Runtime.getRuntime();

Process p = null ; //定义进程变量

try {

p = runtime.exec("mspaint.exe"); //调用本机的画图程序 } catch (IOException e) {

e.printStackTrace();

}

try {

Thread.sleep(5000); //休眠5s

} catch (InterruptedException e) {

e.printStackTrace();

}

p.destroy(); //销毁画图程序的进程

}

}

画图程序将会持续5s ,然后自动关闭。

Runtime 本身是Singleton 设计模式的一种应用,在整个JVM 中只存

在一个Runtime 类的对象,可以使用Runtime 类获得JVM 的系统信息,

或者使用gc ()方法回收内存,还可以使用exec ()运行本机的应用程序。

2014-12-29

回复 0

_潇潇暮雨

【java国际化程序】

所谓国际化程序就是指一个程序可以同时适应多门语言。即如果现在程序的使用这是中国人则会显示中文如果程序的使用者是美国人就会显示英文——通过国际化操作让一个程序适应各个国家的语言要求。

对于各个国家来说程序的内部逻辑的代码不会有任何的不同差异仅仅在于显示的文字。

程序通过不同的语言环境找到不同的资源文件。之后从资源文件中取出内容资源文件中的内容都是以key-->value的形式保存的所以在读取的时候要通过key找到value。

国际化程序实现的3个类

java.util.Locale——国家语言

java.util.ResourceBundle——用于访问资源文件

java.text.MessageFormat——格式化资源文件的占位符

Locale类

Locale表示本地实际上是一个ISO编码对于各个国家来说都存在一个唯一的编码这个编码就称为ISO编码的封装类使用Locale类可以指定一个具体的国家编码。例如中国大陆编码zh-CN美国英语编码en-US日语ja-JPI SO编码可以从https://https://www.doczj.com/doc/e27123387.html,/obp/ui/#search查看也可以通过IE 浏览器的“Internet选项-->常规-->语言-->添加”进行查看。

ResourceBundle类

此类专门完成属性文件的读取操作读取的时候直接指定文件名称即可不需要拓展名拓展名统一为*.properties,可以通过Locale指定的区域码自动选择需要的资源文件。

public ResourceBundle()——唯一的构造方法由子类构造方法调用【因为其本身是一个抽象类】通常是隐式的。

public static final ResourceBundle getBundle(String baseName)——指定要操作的资源文件此方法找到的是操作系统默认的Locale对象。public static final ResourceBundle getBundle(String baseName,Loc ale locale)传入Locale对象。

public final String getString(String key)——根据键取出值。

程序范例

首先建立资源文件

资源文件命名的时候最好首字母大写。其中Info 是程序中需要的内容而H

ello 是Info 指向的具体内容。

从资源中读取数据 1 2 3 4 5 6 7 8 9 10 import java.util.ResourceBundle;

public class InternationalDemo01 {

public static void main(String[] args) {

ResourceBundle rb = ResourceBundle.getBundle("Message"); //找到资源文件不需要指明后缀

System.out.println("资源文件中的内容是"+rb.getString("Info")); }

}

运行结果

资源文件中的内容是Hello

根据不同的国家的语言输出“欢迎光临”

分别定义不同的资源文件需要不同的语言编码

中文Message_zh_CN.properties

英文Message_en_US.properties

日文Message_ja_JP.properties

文件内容分别是

中文Information = \u6B22\u8FCE\u5149\u4E34

英文Information = Welcome

日文Information = \u3044\u3089\u3063\u3057\u3083\u3044\u307

E\u305B

在Eclipse 中建立资源文件会使用java 默认的UTF-16BE 的编码非英文都

要转码。

jdk 的bin 目录下提供了这样一个工具native2ascii.exe

双击打开

1 2 3 4 5 6 7 8 9 10 1import java.util.Locale;

import java.util.ResourceBundle;

public class InternationalDemo02 {

public static void main(String[] args) {

Locale zhLocale = new Locale("zh", "CN");

Locale enLocale = new Locale("en", "US");

Locale jpLocale = new Locale("ja", "JP");

ResourceBundle zhResourceBundle = ResourceBundle.getBundle("Me ssage",

1 1

2 1

3 1

4 1

5 1

6 1

7 1

8 19

2

2

1

2

2

2

3

2

4

zhLocale);

ResourceBundle enResourceBundle = ResourceBundle.getBundle( "Message_en_US", enLocale);

ResourceBundle jpResourceBundle = ResourceBundle.getBundle( "Message_ja_JP", jpLocale);

System.out.println("中文内容是

" + zhResourceBundle.getString("Information"));

System.out.println("日文内容是

" + jpResourceBundle.getString("Information"));

System.out.println("英文内容是

" + enResourceBundle.getString("Information"));

}

}

程序的运行结果是

中文内容是欢饮光临

日文内容是いらっしゃいませ??

英文内容是Welcome

动态处理文本

之前的资源文件中的所有内容实际上都是固定的如果现在有些内容你好x

xx 那么此时就必须在资源文件中进行一些动态文本的设置设置占位符这些

符号中的内容暂时不固定而是在程序执行的时候进行设置的使用MessageF

ormat 类。public class MessageFormat extends Format 。Format 类

有3个子类DateFormat, MessageFormat, NumberFormat 。

占位符使用{数字}的形式表示第一个内容{0}、第二个内容{1}……

MessageFormat 类的常用方法

public static String format (String pattern, Object... arguments)

三个资源文件的内容分别是:

文件内容分别是

中文Information = \u6B22\u8FCE\u5149\u4E34\uFF0C{0}!

英文Information = Welcome,{0}!

日文Information = \u3044\u3089\u3063\u3057\u3083\u3044\u307

E\u305B\uFF0C{0}! 1 2 3 4 5 6 7 8 9 10 11 12 import java.text.MessageFormat;

import java.util.Locale;

import java.util.ResourceBundle;

public class InternationalDemo03 {

public static void main(String[] args) {

Locale zhLocale = new Locale("zh", "CN");

Locale enLocale = new Locale("en", "US");

Locale jpLocale = new Locale("ja", "JP");

ResourceBundle zhResourceBundle = ResourceBundle.getBundle("Me ssage",

zhLocale);

13 14 15 16 17 18 19 20 21 2

2

2

3

2

4

2

5

2

6

2

7

2

8

2

9

ResourceBundle enResourceBundle = ResourceBundle.getBundle( "Message_en_US", enLocale);

ResourceBundle jpResourceBundle = ResourceBundle.getBundle( "Message_ja_JP", jpLocale);

String zhString = zhResourceBundle.getString("Information"); String enString = enResourceBundle.getString("Information"); String jpString = jpResourceBundle.getString("Information");

System.out.println("中文" + MessageFormat.format(zhString, "汤姆"));

System.out.println("英文

" + MessageFormat.format(enString, "Tom"));

System.out.println("日文" + MessageFormat.format(jpString, "トム"));

}

}

运行结果

中文欢迎光临汤姆!

英文Welcome,Tom!

日文いらっしゃいませ??トム!

java 新特性——可变参数jdk1.5之后

使用3个点 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 public class ArgumentsDemo01 {

public static void main(String[] args) {

System.out.println("第一次运行:");

fun(1,2,3,4,5,6);

System.out.println("\n 第二次运行:");

fun("你好",12,36.5,'G',true );

System.out.println("\n 第三次运行:");

Object[]arg = {"你好",1,36.5,false ,'R'};

fun(arg); //直接传入数组

}

public static void fun(Object...args) { //输入任意多的数据使用数组的方式进行接收

for (int i = 0; i < args.length; i++) {

System.out.print(args[i] + " ");

}

}

}

运行结果

第一次运行:

1 2 3 4 5 6

第二次运行:

你好 12 36.5 G true

第三次运行:

你好 1 36.5 false R

使用一个类代替资源文件

实际上以上的应用程序已经是国际化的操作效果所有要显示的内容实际

上都应该放在资源文件之中但在java 中为了照顾部分使用类的用户所以也可以使用一个类来存放所有的资源文件的内容但是此类在操作的时候应该注

意必须继承java.util.ListResourceBundle 抽象类并覆写protected Object

[][] getContents ()方法。 1 2 3 4 5 6 7 8 9 10 11 import java.util.ListResourceBundle;

public class Message_zh_CN extends ListResourceBundle {

private final Object data[][] = { { "Information", "中文欢迎光临{0}!" } };

@Override

protected Object[][] getContents() {

return data;

}

}

1 2 3 4 5 6 7 8 9 10 1import java.text.MessageFormat;

import java.util.Locale;

import java.util.ResourceBundle;

public class InternationalDemo04 {

public static void main(String[] args) {

Locale zhLocale = new Locale("zh", "CN");

ResourceBundle zhResourceBundle = ResourceBundle.getBundle("Me ssage",

zhLocale);

1 1

2 1

3 1

4 15

16 1

7

18

19

String zhString = zhResourceBundle.getString("Information");

System.out.println(MessageFormat.format(zhString, "汤姆"));

}

}

此时项目下面并没有Message_zh_CN.properties 文件而用一个类Mess

age_zh_CN.java 代替。

以上程序的运行结果是

中文欢迎光临汤姆!

关于优先级

不管是资源类还是资源文件找的都是Message 如果现在有多个资源文件

一起出来优先级如下:

Message_zh_CN.class > Message_zh_CN.properties > Message.prop

erties 。

国际化程序的实现的思路就是程序与显示分离根据不同的Locale 找到不

同的资源文件并根据其key 得到对应的value 。在实际的开发中包括struct

Java常用类

常用类 (1)字符串相关类(String,StringBuffer) 1)https://www.doczj.com/doc/e27123387.html,ng.String类代表不可变得字符序列; 2)"***"为该类的一个对象; 3)String类的常见构造方法:String(String original)//创建一个String对象为original 的拷贝;String(char[] value)//用一个字符数组创建一个String对象;String(char[] value,int offset,int count); 4)String 类的常用方法:char charAt(int index)//返回第index个字符、int length()//返回字符串的长度、int indexOf(String str)//返回字符串中出现Str的第一个位置;int indexOf(String str,int fromIndex)//返回字符串中从fromindex开始出现Str的第一个位置;boolean equalsIgnoreCase(string another)//比较是否相等,忽略大小写;String replace(char olochar,char newchar);boolean startswith(String prefix)//判断字符串是否以prefix字符串开头;boolean endsWith(String suffix);String toUpperCase()//返回一个字符串为该字符串的大写形式;String toLowerCase();String substring(int beginIndex0)//返回该字符串从beginindex开始到结尾的子字符串;String substring(int beginindex,int endindxt);String trim()//返回将该字符串去掉开头和结尾空格后的字符串。静态重载方法:public static String valueOf(。。。)//将基本类型数据转换为字符串。String[] split(String regex)//将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组。 (2)StringBuffer类:可变的字符串序列; 1)构造方法:StringBuffer();StringBuffer(string str); 2)常用方法:StringBuffer append();insert();delete();indexOf();rerverse(); (2)基本数据类型包装类:Integer,Double将基本数据类型包装成一个对象; (2)Math类:方法 (3)File类:各类的方法 (4)枚举类Enum:只能够取特定值中的一个,使用enum关键字,是https://www.doczj.com/doc/e27123387.html,ng.Enum类型;

Java程序员必须了解的20个lib库

Java程序员必须了解的20个lib库 一般一个经验丰富的开发者,一般都喜欢使用开源的第三方api库来进行开发,毕竟这样能够提高开发效率,并且能够简单快速的集成到项目中去,而不用花更多的时间去在重复造一些无用的轮子,多了解一些第三方库可以提高我们的开发效率,下面就来看一下在开发过程中经常会用到的一些开发第三方库,也可能不是太全,就列举一些常见或者常用的吧。 1,日志库 日志库是最常用的,毕竟在开发项目的过程中都需要使用日志来记录项目的运行信息,从而很快的定位项目的发生的问题。尽管JDK附带了自己的日志库,但是还有更好的选择,例如Log4j、SLF4j和LogBack。一般建议使用SLF4j。比如Alibaba开发手册上也是这样说的,毕竟SLF4J使您的代码独立于任何特定的日志API,就是在项目的其它框架中使用了其它的日志框架库也能够很好的集成。 2,JSON转换库 在当今的web服务、手机api接口开发和物联网世界中,JSON已经成为将信息从客户端传送到服务器的首选协议。它们前端要学好必须每天坚持学习。为了方便大家的交流学习,也是创建了一个群每天都有分享学习方法和专业老师直播

前端课程,这个扣裙首先是132 中间是667 最后是127 前端学习零基础想要学习的同学欢迎加入,如果只是凑热闹就不要来了!!!已经取代了XML,成为以独立于平台的方式传输信息的首选方式。不幸的是,JDK没有JSON库。但是,有许多优秀的第三方库允许您解析和创建JSON消息,比如Jackson和Gson,FastJson。 3,单元测试库库 单元测试是区分普通开发人员和优秀开发人员的最重要的东西。程序员经常被给予不写单元测试的借口,但是最常见的避免单元测试的借口是缺乏流行的单元测试库的经验和知识,包括JUnit、Mockito和PowerMock。 4,通用类库 Java开发人员可以使用一些优秀的通用第三方库,比如Apache Commons和谷歌Guava。我总是在我的项目中包含这些库,因为它们简化了许多任务。正如约书亚?布洛赫(Joshua Bloch)在《Effective Java》一书中正确指出的那样,重新发明轮子是没有意义的。我们应该使用经过测试的库,而不是时不时地编写我们自己的程序。对于开发人员来说,熟悉Apache Commons和谷歌Guava 是很有用的。 5,HTTP库

java开发常用jar包

java开发常用jar包 mail.jar与activation.jar 里面包含了activation.jar和mail.jar两个包.通过里面的类的调用便可以达到发送电子邮件的目的 commons-beanutils.jar Apache Commons包中的一个,包含了一些Bean工具类类。必须使用的jar包。 commons-collections.jar Apache Commons包中的一个,包含了一些Apache开发的集合类,功能比java.util.*强大 commons-lang.jar Apache Commons包中的一个,包含了一些数据类型工具类,是https://www.doczj.com/doc/e27123387.html,ng.*的扩展。必须使用的jar包。 commons-logging.jar: Apache Commons包中的一个,包含日志功能 commons-io.jar Apache Commons包中的一个,java.io.*的扩展,输入输出,支持文件上传 commons-fileupload.jar Apache Commons包中的一个,是一个通过Http接收上传的文件并处理结果文件的库 dom4j-1.4.jar 和jaxen-1.1.1.jar 是一个Java的XML API,类似于jdom,用来读写XML文件的。Hibernate使用dom4j解析XML配置文件和XML映射元文件。必需的。 ehcache-1.2.jar

Hibernate可以使用不同cache缓存工具作为二级缓存。EHCache是缺省的cache缓存工具。如果没有其它的可选缓存工具,则为必需的。 hibernate3.jar hibernate3的核心类库。 itext.jar 是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 iTextAsian.jar itext中关于亚洲编码的类库,在这里用于中文字体的输入。 junit.jar Junit包,当你运行Hibernate自带的测试代码的时候需要,否则就不用。 commons-digester.jar Apache Commons包中的一个,通过它可以很方便的解析xml文件生成java对象aspectjrt.jar 和aspectjweaver.jar Annotation 方式实现AOP commons-dbcp.jar commons-pool-1.2.jar DBCP数据库连接池 cglib-nodep-2.1_3.jar CGLIB是一个强大的高质量高性能的代码生成库,在运行时可以用它来扩展Java类 jfreechart-1.0.12.jar

2019最新Java面试题,常见面试题及答案汇总

ava最新常见面试题+ 答案汇总 1、面试题模块汇总 面试题包括以下十九个模块:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM 。如下图所示: 可能对于初学者不需要后面的框架和JVM 模块的知识,读者朋友们可根据自己的情况,选择对应的模块进行阅读。 适宜阅读人群 需要面试的初/中/高级java 程序员 想要查漏补缺的人 想要不断完善和扩充自己java 技术栈的人 java 面试官 具体面试题 下面一起来看208 道面试题,具体的内容。 一、Java 基础 1.JDK 和JRE 有什么区别? 2.== 和equals 的区别是什么? 3.两个对象的hashCode()相同,则equals()也一定为true,对吗? 4.final 在java 中有什么作用? 5.java 中的Math.round(-1.5) 等于多少? 6.String 属于基础的数据类型吗? 7.java 中操作字符串都有哪些类?它们之间有什么区别? 8.String str="i"与String str=new String(“i”)一样吗? 9.如何将字符串反转? 10.String 类的常用方法都有那些? 11.抽象类必须要有抽象方法吗? 12.普通类和抽象类有哪些区别? 13.抽象类能使用final 修饰吗?

14.接口和抽象类有什么区别? 15.java 中IO 流分为几种? 16.BIO、NIO、AIO 有什么区别? 17.Files的常用方法都有哪些? 二、容器 18.java 容器都有哪些? 19.Collection 和Collections 有什么区别? 20.List、Set、Map 之间的区别是什么? 21.HashMap 和Hashtable 有什么区别? 22.如何决定使用HashMap 还是TreeMap? 23.说一下HashMap 的实现原理? 24.说一下HashSet 的实现原理? 25.ArrayList 和LinkedList 的区别是什么? 26.如何实现数组和List 之间的转换? 27.ArrayList 和Vector 的区别是什么? 28.Array 和ArrayList 有何区别? 29.在Queue 中poll()和remove()有什么区别? 30.哪些集合类是线程安全的? 31.迭代器Iterator 是什么? 32.Iterator 怎么使用?有什么特点? 33.Iterator 和ListIterator 有什么区别? 34.怎么确保一个集合不能被修改?

Java常用类库介绍

教学内容 第七讲Java常用类库介绍 7.1 Java类库的结构 类库就是Java API(Application Programming Interface,应用程序接口),是系统提供的已实现的标准类的集合。在程序设计中,合理和充分利用类库提供的类和接口,不仅可以完成字符串处理、绘图、网络应用、数学计算等多方面的工作,而且可以大大提高编程效率,使程序简练、易懂。 Java类库中的类和接口大多封装在特定的包里,每个包具有自己的功能。表7.1列出了Java中一些常用的包及其简要的功能。其中,包名后面带“. *”的表示其中包括一些相关的包。有关类的介绍和使用方法,Java中提供了极其完善的技术文档。我们只需了解技术文档的格式就能方便地查阅文档。 表7.1Java提供的部分常用包 注:在使用Java时,除了https://www.doczj.com/doc/e27123387.html,ng外,其他的包都需要import语句引入之后才能使用。 7.2 https://www.doczj.com/doc/e27123387.html,ng包中的常用类

https://www.doczj.com/doc/e27123387.html,ng是Java语言最广泛使用的包。它所包括的类是其他包的基础,由系统自动引入,程序中不必用import语句就可以使用其中的任何一个类。https://www.doczj.com/doc/e27123387.html,ng中所包含的类和接口对所有实际的Java程序都是必要的。下面我们将分别介绍几个常用的类。 7.2.1 String类和StringBuffer类 许多语言中,字符串是语言固有的基本数据类型。但在Java语言中字符串通过String类和StringBuffer类来处理。 1.String类 Java语言中的字符串属于String类。虽然有其它方法表示字符串(如字符数组),但Java使用String 类作为字符串的标准格式。Java编译器把字符串转换成String对象。String对象一旦被创建了,就不能被改变。如果需要进行大量的字符串操作,应该使用StringBuffer类或者字符数组,最终结果可以被转换成String格式。 (1)创建字符串 创建字符串的方法有多种方式,通常我们用String类的构造器来建立字符串。表6.2列出了String 类的构造器及其简要说明。 表7.2 String类构造器概要 【例7.1】使用多种方法创建一个字符串并输出字符串内容。 public class StrOutput { public static void main(Sring[] args) { //将字符串常量作为String对象对待,实际上是将一个String对象赋值给另一个 String s1 = "Hello,java!"; //声明一个字符串,然后为其赋值 String s2; s2 = "Hello,java!";

Java类库常用类

Java.long 和Java.util 常用类 1.Enum 2.包装类 3.Math 4.String 5.StringBuffer 6.日期时间类 7.Random类

Enum(https://www.doczj.com/doc/e27123387.html,ng.Enum的子类) 枚举的定义语法: [Modifier] enum enumName{ EnumContantName1[,EnumContantName1...[;]] //[field,method] } 》Modifier 是访问修饰符,如public等 》enum是关键字 》EnumContantName1 , EnumContantName1...表示枚举常量列表,枚举常量之间以逗号隔开》//[field,method]表示其他成员,包括构造方法,至于枚举常量的后面 》在枚举中,如果除了定义枚举常量,还定义其他成员,则枚举常量类表必须以分号(;)结尾

enum好处 》枚举使代码更易于维护,有助于确保为变量指定合法的,期望的值 》枚举更易于输入,使用枚举赋值,只需要输入枚举名(.),加点 》枚举使代码更清晰,允许描述性的名称表示数据,使用时直观方便 包装类 // 基本数据类型-转换-包装类 public void jiben() { String bian = "11"; Integer integer = new Integer(bian);// 初始化 Integer integer1 = Integer.valueOf(11);// 赋值 Integer integer2 = Integer.parseInt("1998");// String-int String str = integer2.toString();// int-String Integer integer3 = Integer.valueOf(bian, 2); /* * valueOf(bian, 2)方法不是把第几位转化为int类型!!这个int参数是你的这个字符串是什么基数!!2 就是二进制10 就是十进制返回值是 * 以这个基数的十进制整数例如(Integer.parseInt("11",2))返回时3 不是11这是把11解析为二进制 */ System.out.println("基本数据类型转换为包装类:" + integer3); }

java常见的方法

Java常用方法大全 2009-08-22 20:59:03 来源:网络评论:0点击:1087 字符串 1、获取字符串的长度 length() 2 、判断字符串的前缀或后缀与已知字符串是否相同前缀 startsWith(String s) 后缀 endsWith(String s) 3、比较两个字符串equals(String s) 4、把字符串转化为相应的数值 int型 字符串 1、获取字符串的长度 length() 2 、判断字符串的前缀或后缀与已知字符串是否相同 前缀 startsWith(String s) 后缀 endsWith(String s) 3、比较两个字符串 equals(String s) 4、把字符串转化为相应的数值 int型 Integer.parseInt(字符串) long型 Long.parseLong(字符串) float型 Folat.valueOf(字符串).floatValue() double型 Double.valueOf(字符串).doubleValue() 4、将数值转化为字符串 valueOf(数值) 5、字符串检索 indexOf(Srting s) 从头开始检索 indexOf(String s ,int startpoint) 从startpoint处开始检索 如果没有检索到,将返回-1 6、得到字符串的子字符串 substring(int startpoint) 从startpoint处开始获取 substring(int start,int end) 从start到end中间的字符 7、替换字符串中的字符,去掉字符串前后空格 replace(char old,char new) 用new替换old trim() 8、分析字符串 StringTokenizer(String s) 构造一个分析器,使用默认分隔字符(空格,换行,回车,Tab,进纸符) StringTokenizer(String s,String delim) delim是自己定义的分隔符 nextToken() 逐个获取字符串中的语言符号 boolean hasMoreTokens() 只要字符串还有语言符号将返回true,否则返回false countTokens() 得到一共有多少个语言符号

java常用类知识点总结

java常用类知识点总结 Java常用类 要求: 1、掌握String和StringBuffer的区别,可以熟练使用String和StringBuffer的各 种方法进行相关操作。 2、能够自己编写一个得到日期的操作类,并将日期进行格式化操作。 3、掌握比较器及其基本原理,并可以通过比较器进行对象数组的比较操作。 4、掌握对象克隆技术及其实现 5、能够灵活应用正则表达式对字符串的组成进行判断 6、掌握Math、Random、基本数据类型的包装类的使用 7、描述出Object System对垃圾收集的支持 8、使用NumberFormat、DecimalFormat、BigInteger、BigDecimal进行数字的操 作 String和StringBuffer String的内容一旦声明不可改变,如果要改变,改变的是String的引用地址,如果一个字符串要经常改变,必须使用StringBuffer。 在一个字符串内容需要频繁修改时,使用StringBuffer可以提升操作性能,因为StringBuffer内容可以改变,而String内容不可改变。StringBuffer支持的方法大部分与String类似。 StringBuffer常见用法: (1) 字符串的连接操作

String类可以通过“+“进行字符串的连接,而StringBuffer中却只能使用append方法进行字符串的连接,而且此方法返回一个StringBuffer类的实例,这样就可以采用代码链的形式一直调用append方法。 (2) 在任意位置处为StringBuffer添加内容 可以使用insert方法在指定位置上为StringBuffer添加内容 字符串的反转操作(较为常见的操作,使用reverse方法) (3) 替换指定范围的内容 replace方法可对指定范围的内容进行替换。在String中如果要替换,使用的是replaceAll (4) 字符串截取(使用subString方法从指定范围中截取内容) (5) 删除指定范围的字符串(使用delete方法删除指定范围内容) (6) 查找指定内容是否存在(indexOf查找指定内容,查找到返回内容的位置, 没查到返回-1) 问题:(1)String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有, 没有。因为String被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。在这段代码中,s原先指向一个String对象,内容是 "Hello",然后我们对s进行了+操作,那么s所指向的那个对象是否发生了改变呢,答案是没有。这时,s不指向原来那个对象了,而指向了另一个 String对象,内容为"Hello world!",原来那个对象还存在于内存之中,只是s这个引用变量不再指向它了。通过上面的说明,我们很容易导出另一个结论,如果经常对字符串进行各种各样的修改, 或者说,不可预见的修改,那么使用String来代表字符串的话会引起很大的内存开销。因为 String对象建立之后不能再改变,所以对于每一个不同的字符

Java常用包及其类总结

Java常用包及其类总结 java.* https://www.doczj.com/doc/e27123387.html,ng包,最基础的包、核心类库。常用类有String、Math、Thread、Object、包装类Integer、Character等,常用接口有Runnable、Iterable、Comparable。 2.java.util包,实用工具包。常用类有Arrays、Scanner、Random、HashSet、HashMap、ArrayList、Date等,常用接口有Collection、Set、List等。 3.java.io包,提供数据输入输出。常用类有File、FileInputStream、Reader等提供文件、字节输入输出的类。 https://www.doczj.com/doc/e27123387.html,包,为网络连接提供服务。常用类有Socket、ServerSocket、URL等。 5.java.sql包,连接数据库的包。要实现jdbc类库。 6.java.awt、(javax.awt)包,创建用户界面、绘图的。常用类有Button、Panel、(JButton、JPanel)等。 javax.* javax.accessibliity定义UI组件访问的技术规范 java.crypto 包含与加密相关的类和接口 javax.imageio为图形的I/O处理提供支持 javax.management提供与JMX(Java Managment Extensions)相关的类 javax.naming 包含与访问名字服务器相关的类和接口 https://www.doczj.com/doc/e27123387.html, 包含网络应用需要的类 javax.print 包含打印所需要的类和接口 javax.rmi 包含RMI_IIOP服务的类和接口 javax.security.auth提供了一个认证和授权框架 javax.security.cert包含支持公钥证书的相关类 javax.security.sasl包含与支持SASL(Simple Authentication and Security Layer)相关的类和接口javax.sound.midi包含与MIDI数据操作相关的类和接口 javax.sound.sampled包含与抓取、加工、回放音频数据相关的类和接口 javax.sql 包含与服务器端访问和数据源处理相关的API javax.transaction包含事务管理器和资源管理器的规则 javax.xml 包含XML规范描述的常亮和要求

(完整)JAVA编程常用英文单词汇总,.docx

Java 基础常见英语词汇( 共 70 个) OO: object-oriented , 面向对象 OOP: object-oriented programming, 面向对象编程 JDK:Java development kit, java 开发工具包 JVM:java virtual machine ,java虚拟机 Compile: 编绎 Run:运行 Class:类 Object: 对象 System:系统 out:输出 print: 打印 line:行 variable:变量 type:类型 operation:操作 ,运算 array:数组 parameter:参数 method:方法 function: 函数 member-variable: 成员变量 member-function: 成员函数 get:得到 set:设置 public: 公有的 private: 私有的 protected:受保护的 default: 默认 access:访问 package:包 import: 导入 static:静态的 void: 无 (返回类型 ) extends:继承 parent class:父类 base class:基类 super class:超类 child class: 子类

derived class:派生类 override: 重写 ,覆盖 overload: 重载 final: 最终的 ,不能改变的 abstract:抽象 interface: 接口 implements: 实现 exception: 异常 Runtime: 运行时 ArithmeticException: 算术异常ArrayIndexOutOfBoundsException:数组下标越界异常NullPointerException: 空引用异常 ClassNotFoundException: 类没有发现异常NumberFormatException: 数字格式异常(字符串不能转化为数字) Catch:捕捉 Finally: 最后 Throw: 抛出 Throws: ( 投掷 )表示强制异常处理 Throwable:( 可抛出的 )表示所有异常类的祖先类 Lang:language,语言 Util: 工具 Display: 显示 Random:随机 Collection: 集合 ArrayList:( 数组列表 )表示动态数组 HashMap: 散列表 ,哈希表 Swing: 轻巧的 Awt:abstract window toolkit:抽象窗口工具包 Frame:窗体 Size:尺寸 Title: 标题 Add: 添加 Panel:面板 Layout: 布局 Scroll: 滚动 Vertical: 垂直 Horizonatal: 水平 Label: 标签 TextField: 文本框 TextArea: 文本域 Button: 按钮

JAVA中常用类的常用方法

JAVA中常用类的常用方法 一、https://www.doczj.com/doc/e27123387.html,ng.Object类 1、clone()方法 创建并返回此对象的一个副本。要进行“ 克隆” 的对象所属的类必须实现https://www.doczj.com/doc/e27123387.html,ng. Cloneable接口。 2、equals(Object obj)方法 ?功能:比较引用类型数据的等价性。 ?等价标准:引用类型比较引用,基本类型比较值。 ?存在特例:对、Date及封装类等类型来说,是比较类型及对象的内容而不考虑引用的是否为同一实例。 3、finalize()方法 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。 4、hashCode()方法 返回该对象的哈希码值。 5、notify()方法 唤醒在此对象监视器上等待的单个线程。 6、notifyAll()方法 唤醒在此对象监视器上等待的所有线程。 7、toString()方法 返回该对象的字符串表示。在进行String与其它类型数据的连接操作时,自动调用 toString()方法。可以根据需要重写toString()方法。 8、wait()方法 在其他线程调用此对象的notify() 方法或notifyAll() 方法前,导致当前线程等待。二、字符串相关类 String类 charAt(int index) 返回指定索引处的char 值。 compareTo(String anotherString) 按字典顺序比较两个字符串。 compareToIgnoreCase(String str) 按字典顺序比较两个字符串,不考虑大小写。 concat(String str) 将指定字符串连接到此字符串的结尾。 endsWith(String suffix) 测试此字符串是否以指定的后缀结束。 equals(Object anObject) 将此字符串与指定的对象比较。 equalsIgnoreCase(String anotherString) 将此String 与另一个String 比较,不考虑 大小写。 indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引。 indexOf(String str) 返回第一次出现的指定子字符串在此字符串中的索引。 lastIndexOf(int ch) 返回指定字符在此字符串中最后一次出现处的索引。 length() 返回此字符串的长度。 replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用newChar 替换此字符串中出现的所有oldChar 得到的。

java常用lib及用途简介

jar包用途 axis.jar SOAP引擎包 commons-discovery-0.2.jar 用来发现、查找和实现可插入式接口,提供一些一般类实例化、单件的生命周期管理的常用方法. jaxrpc.jar Axis运行所需要的组件包saaj.jar 创建到端点的点到点连接的方法、创建并处理SOAP消息和附件的方法,以及接收和处理SOAP错误的方法. wsdl4j-1.5.1.jar Axis运行所需要的组件包 activation.jar JAF框架的jar包 annotations-api.jar 使用注解所需jar ant.jar 用于自动化调用程序完成项目的编译,打包,测试等 aopalliance-1.0.jar 支持Spring AOP asm-2.2.3.jar ASM字节码库 asm-commons-2.2.3.jar ASM字节码库 asm-util-2.2.3.jar Java字节码操纵和分析框架 aspectjrt.jar 处理事务和AOP所需的包 aspectjweaver.jar 处理事务和AOP所需的包 axiom-api-1.2.7.jar Axis 对象模型 axiom-impl-1.2.7.jar Axis 对象模型 bcprov-jdk15-140.jar 基于java1.5 的加密算法实现 bfmclientmodel.jar 使用WebSphere所需jar包 bpcclientcore.jar 使用WebSphere所需jar包 bpe137650.jar 提供远程访问BPE容器的实现。 bsh-2.0b4.jar 解决负载逻辑运算 c3p0-0.9.0.jar 开放源代码的JDBC连接池 cglib-nodep-2.1_3.jar Spring中自动代理所需jar包 cobertura.jar 测量测试覆盖率 commons-beanutils-1.7.0.jar 动态的获取/设值Java Bean的属性 commons-chain-1.1.jar 实现责任链设计模式的Java 类库 commons-codec-1.3.jar 用来处理常用的编码方法的工具类包,例如DES、SHA1、MD5、Base64等等 commons-collections-3.1.jar 对标准java Collection的扩展 commons-collections.jar 对标准java Collection的扩展 commons-digester-1.8.jar 用于处理struts-config.xml配置文件 commons-fileupload-1.1.1.jar struts上传文件 commons-httpclient-3.1.jar 用来简化HTTP客户端与服务器端进行各种通信编程实现commons-io-1.1.jar 针对java.io.InputStream和Reader进行了扩展 commons-lang-2.4.jar 对https://www.doczj.com/doc/e27123387.html,ng.*的扩展 commons-logging-1.1.1.jar 日志包 commons-pool-1.3.jar 实现对象池化框架 commons-validator-1.3.1.jar 用来把验证规则程序提取出来,以供重复使用 db2jcc.jar java连接DB2所需jar db2jcc_license_cu.jar java连接DB2所需jar dom4j-1.6.1.jar 解析XML ehcache-1.2.4.jar hibernate的二级缓存如果用ehcache的时候需要此jar包

Java标准包中基本常用类和方法

Java标准包中基本常用类和方法 java.util.Vector; java.util.ArrayList; java.util.Date; java.util.Calendar; java.util.Hashtable; java.util.Properties; java.util.Random; java.util.Timer; java.awt.* javax.swing.* Thread String Java常用方法: 1、获取字符串的长度 length() 2 、判断字符串的前缀或后缀与已知字符串是否相同 前缀startsWith(String s) 后缀endsWith(String s) 3、比较两个字符串 equals(String s)

4、把字符串转化为相应的数值 int型Integer.parseInt(字符串) long型Long.parseLong(字符串) float型Folat.valueOf(字符串).floatValue() double型Double.valueOf(字符串).doubleValue() 4、将数值转化为字符串 valueOf(数值) 5、字符串检索 indexOf(Srting s) 从头开始检索 indexOf(String s ,int startpoint) 从startpoint处开始检索 如果没有检索到,将返回-1 6、得到字符串的子字符串 substring(int startpoint) 从startpoint处开始获取 substring(int start,int end) 从start到end中间的字符 7、替换字符串中的字符,去掉字符串前后空格 replace(char old,char new) 用new替换old trim() 8、分析字符串 StringTokenizer(String s) 构造一个分析器,使用默认分隔字符(空格,换行,回车,Tab,进纸符) StringTokenizer(String s,String delim) delim是自己定义的分隔符 nextToken() 逐个获取字符串中的语言符号

java面向对象编程、类的封装、接口和基本类库练习题

面向对象编程基本知识练习 一、判断题 1.不需要定义类,就能创建对象。() 2.构造方法用于给类的private 实例变量赋值。() 3.对象一经声明就可以立即使用。() 4.在定义变量和方法时,必须清楚地在其面前标上访问权限修饰符。() 5.Java 程序中的参数传递都是把参数值传递给方法定义中的参数。() 6.在类定义中,成员访问权限修饰符不能多次出现。() 7.new 操作符动态地为对象按其指定的类型分配内存,并返回该类型的一个引用。() 8.类的方法通常设为public ,而类的实例变量一般也设为public 。() 9.构造方法在创建对象时被调用。() 10.通过点运算符与类对象的引用相连,可以访问此类的成员。() 11.声明为protected 的类成员只能被此类中的方法访问。() 12.同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间。() 13.类的成员变量可以放在类体的任意位置。() 14.声明为protected 的类成员可以被此类作用域中的任何对象访问。() 15.没有返回值的方法可以用void 来表示,也可以不加。() 二、选择题 1.下面对对象概念描述错误的是:() A 操作是对象的动态属性 B 任何对象都必须有继承性 C 对象间的通讯靠消息传递 D 对象是属性和方法的封装体 2.编译并运行下面的程序,运行结果为:() public class A { public static void main(String[] args) { A a=new A(); a.method(8); } void method(int i) { System.out.println(“int:“+i);

(完整版)Java常用类

常用类 Object类 它是Java所有类的根类.所以Java的所有对象都拥有Object类的成员. 1.一般方法 boolean equals(Object obj) //本对象与obj对象相同,返回true String toString() //返回本对象的字符串表达形式,默认返回类名称和十六进制数的编码,即:getClass().getName+’@’+Integer.toHexString(hashCode()); 如果要显示自定义的对象,则需要覆盖这个方法。 protected void finalize() throws Throwable //对象销毁时被自动调用, native int hashCode() 返回对象的Hash码,Hash码是表示对象的唯一值,故Hash码相同的对象是同一对象。 2.控制线程的方法 final native void wait() //等待对象 final native void notify() //通知等待队列中的对象进入就绪队列 final native void notifyAll()//通知所有处于等待队列中的对象进入就绪队列 3.关于Object类的几点说明: 3.1. native <方法> 是指用C++语言编写的方法。 3.2.“==”运算符一般用于基本数据类型的比较,如果用于两个引用对象的比较,则 只有当两个引用变量引用同一个对象时,才返回true,否则返回false. String s1=new Strng(“java”); String s2=new Strng(“java”); System.out.pritnln(s1==s2); //显示false 但是,假如不使用new 关键字,创建String 型对象s3,s4,则它们引用的是同一个对象。 String s3=“java”; String s4=“java”;因为没有使用new 关键字,所以s4 引用既存的对象 System.out.pritnln(s3==s4); //显示true, 3.3. 比较对象内容时,使用equals()函数 Object 类的equals()定义 Public boolean equals(Object obj){ return (this==obj); } 由于String 类覆盖了继承自Object类的equals()方法,它比较的是引用对象的内容. 所以,没有覆盖equals()方法的类的对象使用该方法与另一对象进行比较时,永远返 回false; 只是因为此时进行比较调用的是Object的equals方法. 4. Object引用型变量 Object引用型变量可以用来引用所有的对对象. Object[] obs=new Object[3]; obs[0]=new Strng(“12345”);//将String对象赋给obs[0] obs[0]=new Boolean(true); obs[0]=new Integer(100); 5. toString()方法

JAVA常用工具类

JA V A常用工具类 Object类 它是Java所有类的根类.所以Java的所有对象都拥有Object类的成员. 1.一般方法 boolean equals(Object obj) //本对象与obj对象相同,返回true String toString() //返回本对象的字符串表达形式,默认返回类名称和十六进制数的编码,即:getClass().getName+?@?+Integer.toHexString(hashCode()); 如果要显示自定义的对象,则需要覆盖这个方法。 protected void finalize() throws Throwable //对象销毁时被自动调用, protected native int hashCode() 返回对象的Hash码,Hash码是表示对象的唯一值,故Hash码相同的对象是同一对象。 2.控制线程的方法 final native void wait() //等待对象 final native void notify() //通知等待队列中的对象进入就绪队列 final native void notifyAll()//通知所有处于等待队列中的对象进入就绪队列 3.关于Object类的几点说明: 3.1. native <方法> 是指用C++语言编写的方法。 3.2.“==”运算符一般用于基本数据类型的比较,如果用于两个引用对象的比较,则 只有当两个引用变量引用同一个对象时,才返回true,否则返回false. String s1=new Strng(“java”); String s2=new Strng(“java”); System.out.pritnln(s1==s2); //显示false 但是,假如不使用new 关键字,创建String 型对象s3,s4,则它们引用的是同一个对象。 String s3=“java”; String s4=“java”;因为没有使用new 关键字,所以s4 引用既存的对象 System.out.pritnln(s3==s4); //显示true, 3.3. 比较对象内容时,使用equals()函数 Object 类的equals()定义 Public boolean equals(Object obj){ return (this==obj); } 由于String 类覆盖了继承自Object类的equals()方法,它比较的是引用对象的内容. 所以,没有覆盖equals()方法的类的对象使用该方法与另一对象进行比较时,永远返 回false; 只是因为此时进行比较调用的是Object的equals方法. 4. Object引用型变量 Object引用型变量可以用来引用所有的对对象. Object[] obs=new Object[3]; obs[0]=new Strng(“12345”);//将String对象赋给obs[0] obs[0]=new Boolean(true); obs[0]=new Integer(100); 5. toString()方法

相关主题
文本预览
相关文档 最新文档