搜档网
当前位置:搜档网 › Java常用API总结分享(二)

Java常用API总结分享(二)

Java常用API总结分享(二)
Java常用API总结分享(二)

Java常用API总结分享(二)

4.数值,字符,布尔对象与简单类型的操作

简单的对照表如下:

Object Primitive 范围

Number Long long -9223372036854775808 to 9223372036854775807 Integer int -2147483648 to 2147483647

Short short -32768 to 32767

Byte byte -128 to 127

Double double

Float float

Character char '\u0000' to '\uffff'

Boolean boolean false and true

与C等其它语言不同的是数值的范围不随平台的改变而改变,这就保证了平台之间的统一性,提高了可移植性。

Number: Number本身是个抽象类,不能直接使用,所有直接从Number继承下来的子类都有以下几种方法:

? byte byteValue() 返回字节值

? double doubleValue() 返回double值

? float floatValue() 返回float值

? int intValue() 返回float值

? long longValue() 返回long值

? short shortValue() 返回short值

在需要通过Object来取得简单数据类型的值的时候就得用到以上的方法,不过我不推荐不同类型之间的取值,比如Long型的Object不要直接去调用intValue(),精度可能会丢失。

如果想通过String来得到一个数值类型的简单类型值,一般在每个Number的类里面都有一个parseXXX(String)的静态方法,如下:

? byte Byte.parseByte(String s)

? double Double.parseDouble(String s)

? float Float.parseFloat(String s)

? int Integer.parseInt(String s)

? long Long.parseLong(String s)

? short Short.parseShort(String s)

如果想直接从String得到一个Number型的Object,则每个Number类里面都有valueOf(String s) 这个静态方法。如:

? Byte Byte.valueOf(String s)

? Double Double.valueOf(String s)

? Float Float.valueOf(String s)

? Integer Integer.valueOf(String s)

? Long Long.valueOf(String s)

? Short Short.valueOf(String s)

一般的在构造一个Number的时候都可以通过一个String来完成,比如:

Long longObject = new Long(“1234567890”);

等价于

Long longObject = Long.valueOf(“1234567890”);

因为每个Number的子类都实现了Object的toString()方法,所以,如果想得到一个String型的数值,直接调用XXX.toString()就可以了。如果想得到一个简单类型的String,方法很多总结如下:

? 首先生成对应的Number Object类型,然后调用toString()

? 调用Number子类 .toString(type t) 其中t就是简单类型的数据。

? 调用String.valueOf(type t) (推荐使用这种方法)

大家可以看出,往往一种结果可以用多种方法实现,总的原则就是深度最少优先。比如由一个String得到一个简单类型的值可以有以下两种方法:

Integer.parseInt(“12345”);

或(new Integer(s)).intValue(“12345”);

当然应该使用第一种方法。

Character: Character对应着char类型, Character类里面有很多静态的方法来对char 进行判断操作,详细的操作请参照JDK API。 Java对字符的判断操作基本都是以Unicode 进行的,比如Character.isDigit(char ch)这个方法,不光半角的0-9符合要求,全角的日文0-9也是符合要求的。

Boolean: Boolean对应着boolean类型, boolean只有true和false两个值,不能与其它数值类型互换,可以通过字符串”true”以及”false”来得到Object的Boolean,也可以通过简单类型的boolean得到Boolean,常用方法如下:

? Boolean(boolean value) 通过简单类型的boolean构造Boolean

? Boolean(String s) 通过String(“true”, “false”)构造Boolean

? boolean booleanValue() 由Object的Boolean得到简单类型的boolean值

? boolean equals(Object obj) 覆盖了Object的.equals方法, Object值比较? static Boolean valueOf(String s) 功能与构造函数Boolean(String s)一样5.Class, ClassLoader

Java是一种介于解释与编绎之间的语言, Java代码首先编绎成字节码,在运行的时候再翻译成机器码。这样在运行的时候我们就可以通过Java提供的反射方法(reflect)来得到一个Object的Class的额外信息,灵活性很大,可以简化很多操作。

Class: 任何一个Object都能通过getClass()这个方法得到它在运行期间的Class。得到这个Class之后可做的事情就多了,比如动态得到它的构造函数,成员变量,方法等等。还可以再生成一份新的实例,下面只给出几个我们常用的方法,更详细的用法参照Java API

? Class Class.forName(String className) throws ClassNotFoundException:这是个静态方法,通过一个Class的全称来得到这个Class。

? String getName() 取得这个Class的全称,包括package名。

? Object newInstance() 得到一个实例,调用缺省的构造函数。

例如我们有一个类: com.some.util.MyClass 如果得到它的一个实例呢?可能有以下两种方法:

MyClass myClass = new MyClass(),直接通过操作符new生成;

或者:

MyClass myClass = (MyClass) Class.forName(“com.some.util.MyClass”).newInstance();

也许有人就会怀疑第二种方法实际意义,能够直接new出来干嘛绕弯。但实际上它的用处却很大,举个例子:用过struts的人都知道,在action-config.xml当中定义了一系列的formBean与actionBean,当然每个form与action都具有同类型,这样在一个request 过来的时候我可以动态的生成一个form与action的实例进行具体的操作,但在编码的时候我并不知道具体是何种的form与action,我只调用它们父类的方法。你如果要用第一种方法的话,你得在编码的时候通过一个标志来判断每一次request需要具体生成的form 与action,代码的灵活性大大降低。总的来说在面向接口的编程当中经常使用这种方法,比如不同数据库厂家的JDBC Driver都是从标准的JDBC接口继承下去的,我们在写程序的时候用不着管最终是何种的Driver,只有在运行的时候确定。还有XML的Parser也是,我们使用的只是标准的接口,最后到底是谁来实现它的,我们用不着去管。

ClassLoader: ClassLoader是一个抽象类,一般的系统有一个缺省的ClassLoader用来装载Class,用ClassLoader.getSystemClassLoader()可以得到。不过有时候为了安全或有其它的特殊需要我们可以自定义自己的ClassLoader来进行loader一些我们需要的Class,比如有的产品它用了自己的ClassLoader可以指定Class只从它指定的特定的JAR文件里面来loader,如果你想通过覆盖ClassPath方法来想让它用你的Class是行不通的。有兴趣的可以参照Java API 的更详细的用法说

6. Java IO系统

JDK1.0输入流

InputStream

ByteArrayInputStream

FileInputStream

FilterInputStream

ObjectInputStream

PipedInputStream

SequenceInputStream

BufferedInputStream

DataInputStream

PushbackInputStream

LineNumberInputStream

JDK1.1输入流

Reader

BufferedReader

FilterReader

PipedReader

StringReader

InputStreamReader

CharArrayReader

FileReader

PushbackReader

LineNumberReader

JDK1.0输出流

OutputStream

BufferedOutputStream

DataOutputStream

PrintStream

ByteArrayOutputStream

FileOutputStream

FilterOutputStream

ObjectOutputStream

PipedOutputStream

JDK1.1输出流

Writer

BufferedWriter

FilterWriter

PipedWriter

StringWriter

FileWriter

PrintWriter

OutputStreamWriter

CharArrayWriter

如果你刚刚接触Java的IO部分,你可能会感觉无从入手,确实Java提供了过多的类,反而让人感到很乱。

可将Java库的IO类分为输入与输出两个部分,在1.0版本中提供了两个抽象基类,所有输入的类都从InputStream继承,所有输出的类都从OutputStream继承, 1.1提供了两个新的基类,负责输入的Reader与输出的Writer,但它们并不是用来替换原来老的InputStream与OutputStream,它们主要是让Java能更好的支持国际化的需求。原来老的IO流层只支持8位字节流,不能很好地控制16位Unicode字符。 Java内含的char是16位的Unicode,所以添加了Reader和Writer层次以提供对所有IO操作中的Unicode 的支持。除此之外新库也对速度进行了优化,可比旧库更快地运行。

InputStream的类型:

1.字节数组

2. String对象

3.文件

4.管道,可以从另外一个输出流得到一个输入流

5.一系列的其他流,可以将这些流统一收集到单独的一个流内。

6.其他起源(如socket流等)

还有一个是File类,Java中一个目录也是一个文件,可以用file.isFile()和file.isDirectory()来进行判断是文件还是目录。 File 对象可能作为参数转换为文件流进行操作。具体操作参照Java IO API。

常用方法:

/**

* 拼文件名, 在windows(\)跟unix(/)上的文件分割符是不一样的

* 可以通过File类的静态成员变量separator取得

*/

public static String concatFileName(String dir, String fileName) {

String fullFileName = "";

if (dir.endsWith(File.separator)) {fullFileName = dir + fileName;

} else {fullFileName = dir + File.separator + fileName;}

return fullFileName; }

/**

* 从控制台读取输入的数据, System.in (InputStream) 先转换至InputStreamReader再用

* BufferedReader进行读取.

*

*/

BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); String str = "";

while (str != null) {str = in.readLine();// process(str); }

/**

* 从文件中按行进行读取数据处理

*/

BufferedReader in = new BufferedReader(new FileReader("infilename"));

String str;

while ((str = in.readLine()) != null) {// process(str); }

in.close();

/**

* 写数据至一个新的文件中去.

*/

BufferedWriter out = new BufferedWriter(new FileWriter("outfilename"));

out.write("a String");

out.close();

/**

* 追加新的数据到一个文件中去, 如果原文件不存在

* 则新建这个文件.

*/

BufferedWriter out = new BufferedWriter(new FileWriter("filename", true)); out.write("aString");

out.close();

/**

* 将一个可序列化的Java的object以流方式写到一个文件中去中.

*/

ObjectOutput out = new ObjectOutputStream(new FileOutputStream("filename.ser")); out.writeObject(object);

out.close();

/**

* 从文件中恢复序列化过的Java Object

*/

ObjectInputStream in = new ObjectInputStream(new FileInputStream("filename.ser"));

Object object = (Object) in.readObject();

in.close();

/**

* 以指定的编码方式从文件中读取数据

*/

BufferedReader in = new BufferedReader(new InputStreamReader(

new FileInputStream("infilename"), "UTF8"));

String str = in.readLine();

/**

* 以指定的编码方式写数据到文件中

*/

Writer out = new BufferedWriter(new OutputStreamWriter(

new FileOutputStream("outfilename"), "UTF8")); out.write("a String");

out.close();

由上面的例子可以看出,流之间可以互相转换,如果想对流进行字符操作最好将之转换成BufferedReader与BufferedWriter这样可以提高读写的效率。

需要注意的是一般来说流的大小是得不到的,虽然一般的InputStream都有一个

available()的方法可以返回这个流可以读到的字节数,不过这个方法有时候不会很准确,比如在读取网络传输的流的时候,取到的长度并不一定是真实有效的长度。

大家在写程序的时候可能已经注意到一些类都继承了java.io.Serializable这个接口,其实继承了这个接口之后这个类的本身并不做任何事情,只是这个类可以被序列化并通过流来进行传输,并可被还原成原Object。这个流可以通过网络传输(EJB 中进行传递参数和返回值的Data Class),也可以保存到文件中去(ObjectOutputStream)。

实验5 JAVA常用类

山西大学计算机与信息技术学院 实验报告 姓名学号专业班级 课程名称 Java实验实验日期成绩指导教师批改日期 实验5 JAVA常用类实验名称 一.实验目的: (1)掌握常用的String,StringBuffer(StringBuilder)类的构造方法的使用;(2)掌握字符串的比较方法,尤其equals方法和==比较的区别; (3)掌握String类常用方法的使用; (4)掌握字符串与字符数组和byte数组之间的转换方法; (5)Date,Math,PrintWriter,Scanner类的常用方法。 二.实验内容 1.二进制数转换为十六进制数(此程序参考例题249页9. 2.13) 程序源代码 import java.util.*; public class BinToHexConversion{ //二进制转化为十六进制的方法 public static String binToHex(String bin){ int temp; //二进制转化为十六进制的位数 if(bin.length()%4==0) temp = bin.length()/4; else temp = bin.length()/4 + 1; char []hex = new char[temp]; //十六进制数的字符形式 int []hexDec = new int[temp];//十六进制数的十进制数形式 int j = 0; for(int i=0;i=0&&dec<10) return (char)('0'+dec-0); else if(dec>=10&&dec<=15) return (char)('A'+dec-10); else return '@'; }

Java常用类和方法面试题+答案

2015年12月20日18:25:21 Java常用类和方法重点总结 作者:数据分析玩家 1、简述Java中内存分配的问题 1>凡是new()出来的东西,都是在堆中进行分配的 2>局部变量【数据类型+变量名】都是在栈中进行分配的 3>静态变量【static】和字符串常量【“String”】都是在数据区进行分配的 4>方法【代码】都是在代码区进行存放的 2、简述Java中Object类的地位 1>Java中所有的类【自己定义的类以及Sun公司提供的类】都默认自动继承了Object类 2>Java中所有的类都从Object类中继承了toString()方法、hashCode()方法和equals()等方法 3、简述Object类中toString()方法的注意事项 1>toString()方法的返回值是一个字符串 2>toString()方法返回的是类的名字和该对象的哈希码组 成的一个字符串,即toString()方法返回的是该对象的字符串表示形式 3>在Java中System.out.println(类对象名)实际输出的是该对象的toString()方法返回的字符串,即括号中的内容等价于类对象名.toString(),toString方法的好处是在碰到

println方法的时候会被自动调用,不用显示的写出来 4>建议所有的子类都重写从Object类中继承过来toString 方法,否则toString方法的返回值没有什么实际含义 4、简述Object类中equals()方法的注意事项 1>equals方法的返回值为true或false 2>Object类中equals方法只有在两个对象是同一块内存区域时,即不但内容相同、地址还必须相同时才返回true,否则即便内容相同、如果地址不同只会返回false 3>重写Object类中的equals方法目的在于:保证只要两个对象的内容相同,equals方法就返回true 5、简述Object类中hashCode()方法的注意事项 1>哈希码原本指的是内存空间地址的十六进制表示形式 2>hashCode()方法返回的是该对象的哈希码、即该对象的真实内存地址的十六进制表示形式,但是重写完hashCode()方法之后,返回的不再是该对象真实内存地址的十六进制表示形式 6、学习Java中toString方法、equals方法、hashCode方法共同的一个注意事项 在Java中,凡是动态分配的内存都是没有名字的,而是将其地址赋给一个指针变量【引用】,用指针变量去代表这个事物,所以引用和动态分配的内存有本质上的区别,但是在学习Java中的toString方法、equals方法和hashCode方

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中的关键字总结 final 关键字 1、用final修饰的类不能被继承,没有子类; 2、用final修饰的方法,方法不能被重写; 3、用final修饰变量,变量的值不能被修改,表示常量,(书写规范:全部字母都要大写;多个单词,可以使用下划线(_)分开;) 注意:如果被final修饰的变量是一个引用类型的数据,那么通过这个引用改变堆空间中的数据,不会报错;如果被final修饰的变量是一个引用类型的数据,那么通过这个引用改变堆空间中的数据,不会报错; 4、final用于成员变量表示该成员变量为常量,不能被修改,必须在变量定义时赋值。 5、final用于局部变量表示该局部变量为常量,不能被修改,可以在变量定义时赋值,也可以先定义变量后赋值。 什么时候用final关键字? 有的时候不想别人重写我的方法就使用final关键字修饰该方法; static关键字 1、static用于成员变量表示该变量只有一份,也就是说静态成员变量属于类而不属于某个具体的类实例对象,所有的类实例对象共享这个静态成员变量;静态函数是不需要对象的,直接可以使用类名来调用; 2、非静态函数可以调用静态函数;静态函数不能调用非静态函数(非静态函数都是通过对象调用的);静态函数不能使用非静态成员变量,但可以使用静态成员变量; 3、静态函数调用时不需要对象的,所以不能使用和对象有关的关键字;(this;super;) 4、构造函数不能使用static修饰(构造函数是创建对象,开辟空间,给所有成员变量赋默认值之后,有JVM调用进栈,用来给对象的成员变量赋初始值的) static用于类,这里指的是内部类,那么在别的地方就可以通过外部类名来引用这个静态的内部类。 5、static还可以用于类的代码块,叫做静态代码块,静态代码块在类加载的时候就执行完毕,而类只加载一次;是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先

JAVA中常用类的常用方法

JAVA中常用类的常用方法 一、https://www.sodocs.net/doc/596019684.html,ng.Object类 1、clone()方法 创建并返回此对象的一个副本。要进行“克隆”的对象所属的类必须实现https://www.sodocs.net/doc/596019684.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() 方法前,导致当前线程等待。 二、字符串相关类 l 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 得到的。split(String regex) 根据给定正则表达式的匹配拆分此字符串。 startsWith(String prefix) 测试此字符串是否以指定的前缀开始。 substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。该子字符串始于指定索引处的字符,一直到此字符串末尾。 substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的beginIndex 处开

实验5Java常用类(一)

实验5 Java类库和常用类(一) 一. 实验目的及实验环境 1理解类库的概念,掌握分析、应用类库中的类的方法。 2熟练掌握Math类的常用方法。熟悉Random类的常用方法。 3理解String类的特性,熟练掌握String类的常用方法。 4能用Date类创建对象,熟练掌握Date类的常用方法。 5熟练掌握SimpleDateFormat解析日期和设置日期输出格式。 6学会查阅Java API在线参考文档和离线文档的方法。 二. 实验内容 1 基本内容(实验前请及时熟悉如下相关内容) 1)练习使用Math类的常用方法。 2)应用String类编程练习。 3)编写程序应用Random类生成随机数。 4)练习使用Date类的常用方法。 5)查阅Java API在线参考文档和下载Java API离线文档。 示例1. 应用SimpleDateFormat类的程序示例如下,共同学们模仿参考。 import java.text.*; import java.util.Date; public class FormatDateTime { public static void main(String[] args) { SimpleDateFormat myFmt = new SimpleDateFormat("yyyy年MM月dd日 HH 时mm分ss秒"); SimpleDateFormat myFmt1 = new SimpleDateFormat("yy/MM/dd HH:mm"); SimpleDateFormat myFmt2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 等价于now.toLocaleString() SimpleDateFormat myFmt3 = new SimpleDateFormat("yyyy年MM月dd日 HH 时mm分ss秒 E "); SimpleDateFormat myFmt4 = new SimpleDateFormat("一年中的第 D 天一年中第w个星期一月中第W个星期在一天中k时 z时区"); Date now = new Date();//当前时间 System.out.println(myFmt.format(now)); System.out.println(myFmt1.format(now)); System.out.println(myFmt2.format(now)); System.out.println(myFmt3.format(now)); System.out.println(myFmt4.format(now)); System.out.println(now.toGMTString());//The method toGMTString() from the type Date is deprecated. System.out.println(now.toLocaleString()); System.out.println(now.toString()); } }

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常用类String的面试题汇总

Java常用类String的面试题汇总 1、比较两个字符串时使用“==”还是equals()方法? 当然是equals方法。“==”测试的是两个对象的引用是否相同,而equals()比较的是两个字符串的值是否相等。简单来说,基本数据类型都可以使用==。而引用类型使用==比较不了。 2、如何将字符串转化成int? 使用包装类Integer。Integer.valueOf("2");其他基本数据类型都是类似 3、为什么在Java中存储密码要使用char[],而不使用String。 因为String是不可变的,当String创建之后,就不会再改变了。而char[]是可变的,程序员在用完之后可以将其改变,不会留下任何原始数据。所以,在使用密码时,一般都是会用char数组,例如JavaSwing中的JPassWordField,获取密码框的值就是使用char 数据。而不使用String。 4、String可以在Switch语句中使用吗? JDK1.7之后确实可以了。之前不行。需要程序员对JDK升级的API有适当的了解。 5、如何将字符串用空白字符分割开 可以使用正则表达式来做到分割字符。“\s”代表空白字符”“, “\t”, “\r”, “\n”等等, String[] strArray = str.split("\\s+"); 6、substring()方法到底做了什么? 因为String是不可变的,所以在字符串截取时,subString做了一些工作。在JDK6时,用一个字符数组来表示现存的字符串,然后在这个字符数组中截取字符串,截取之后,并没有创建新的字符数组。而在JDK7中,截取的新的字符串是一个新的数组,这样效率更快一些。因为垃圾回收器会去回收不再使用的字符串。

JAVA重点知识总结

CoreJava部分 1简述下java基本数据类型及所占位数,java基本数据类型:4类8种 整数类型:byte(1byte),short(2byte),int(4byte),long(8byte) 浮点类型:float(4byte),double(8byte) 字符类型:char(2byte) 逻辑类型:boolean(false/true1byte) 2说出5个启动时异常 ------RunTimeException ------NullPointerException ------ArrayIndexOutOfBoundsException ------ClassCastException ------NumberFormatException 3HashMap和HashTable的区别: 1HashMap允许空键值对,HashTable不允许 2HashMap不是线程安全的,HashTable是 3HashMap直接实现Map接口,HashTable继承Dictionary类 4.ArrayList,Vector,LinkedList存储性能和区别 它们都实现了List接口 ArrayList和Vector都是基于数组实现的 LinkedList基于双向循环链表(查找效率低,添加删除容易) ArrayList不是线程安全的而Vector是线程安全的,所有速度上ArrayList高于Vector 5.Collection和Collections的区别 Collection是集合类的上级接口,继承与他的接口主要有Set和List Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全等操作。 6List、Map、Set三个接口,存取元素时,各有什么特点? List以特定次序来持有元素,可有重复元素。 Set无法持有重复元素,内部排序 Map保存key-value值,value可多值。 7final,finally,finalize的区别 Final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承Finally是异常处理语句结构的一部分,表示总是执行 Finalize是Object类的一个方法,在垃圾收集时的其他资源回收,例如关闭文件等。8Overload和Override的区别。Overload的方法是否可以改变返回值的类型? 方法的重写Override和重载Overload是Java多态的不同表现。 重写Overriding是父类与子类之间多态的一种表现,方法名,参数列表返回值类型都得与父类的方法一致。 重载Overloading是一种类中多态的一种表现。重载的方法是可以改变返回值类型的。9用一句话总结一下冒泡排序 依次比较相邻的两个数,将小数放在前面,大数放在后面。 10实现线程安全的两种方式 1)synchronized方法:通过在方法声明加入synchronized关键字来声明synchronized方法

Java常用包及其类总结

Java常用包及其类总结 java.* https://www.sodocs.net/doc/596019684.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.sodocs.net/doc/596019684.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.sodocs.net/doc/596019684.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集合类总结

一:直观框架图 简单版: 详细版: Java集合框架 Java集合框架主要包括两种类型的容器,一种是集合(Collection),另一种是图(Map)。Collection接口又有3种子类型,List、Set和Queue,再下面是一些抽象类,最后是具体实现类,常用的有ArrayList、lixxxxnkedList、HashSet、lixxxxnkedHashSet、HashMap、lixxxxnkedHashMap等等。Map常用的有HashMaplixxxxnkedHashMap等。 二、Collection接口 1.List List接口扩展自Collection,它可以定义一个允许重复的有序集合,从List接口中的方法来看,List接口主要是增加了面向位置的操作,允许在指定位置上操作元素,同时增加了一个能够 双向遍历线性表的新列表迭代器ListIterator。AbstractList类提供了List接口的部分实现,

AbstractSequentialList扩展自AbstractList,主要是提供对链表的支持。下面介绍List接口的 两个重要的具体实现类,也是我们可能最常用的类,ArrayList和lixxxxnkedList。 1.1ArrayList 通过阅读ArrayList的源码,我们可以很清楚地看到里面的逻辑,它是用数组存储元素的,这 个数组可以动态创建,如果元素个数超过了数组的容量,那么就创建一个更大的新数组,并 将当前数组中的所有元素都复制到新数组中。假设第一次是集合没有任何元素,下面以插入 一个元素为例看看源码的实现。 1. 2. 1、找到add()实现方法。 3. 4. 5. 6. public boolean add(E e) { 7. 8. ensureCapacityInternal(size + 1); // Increments modCount!!

何小伟-高手总结java常用API

Java常用API的运用,效率及技巧 1. Java面向对象基本概念 2. System 3. String, StringBuffer 4. 数值,字符,布尔对象与简单类型的操作 5. Class, ClassLoader 6. Java IO系统 7. Java集合类 8. ResourceBundle, Properties 9. Exceptions 10. JDBC类库 11. 常用设计模式 1. Java面向对象基本概念 Java基本上是面向对象的程序设计语言,除了一些简单类型(primitive)的变量以外,一切都是对象,程序是对象的组合,每个对象都有自己的空间,并且每个对象都有一种类型,同一类所有对象都能接受相同的消息。下面只对Java中对象的结构作简单的说明: 类(class): class是定义类的关键字,类中包含类变量,方法,内部类,内部接口等。由class可以生成类的实例,即一个个对象。如果一个类的成员被定义 成static的,则这个成员不专属于任何对象,而是属于这个类,所有的对象共享这 个成员。 抽象类(abstract class): 抽象类不能直接生成一个实例,抽象类中必需有方法是abstract的,抽象类的意思就是它实现了一部分的方法,而定义为abstract的方法 则需要在它的字类中去实现。 接口(interface): 接口可以理解为纯抽象的类,它的每个方法都是未实现的,它可以有成员变量,但必须是static的。一个类如果从这个接口继承(implements) 则它必须实现这个接口的所有方法。 继承类用关键字:extends,继承接口用关键字:implements。一个类只能从一个类继承下来,但可以从多个接口继承(类似于C++的多重继承)。字类可以覆盖父类的方法(method),但不能覆盖父类的成员变量(field)。如果父类的方法为final或static的则不能被覆盖。类的初始化顺序是,如果有父类,则先初始化父类的field,然后执行父类的构造函数,如果子类没有显式的去调父类的构造函数则缺省的会去调父类的无参数构造函数。然后是子类的field 与构造函数的初始化。 public interface SuperInterface { public staitc String SOME_FLAG = “1”; public void someMethod(); } public Class SuperClass { { System.out.println(“init SuperClass field”);} public SuperClass() {System.out.println(“init SuperClass Constructor”); } public void runMethod() { System.out.println(“run SuperClass runMethod()”); } }

java学习整体总结

CoreJava部分 1 简述下java基本数据类型及所占位数,java基本数据类型:4类8种 整数类型:byte(1byte),short(2byte),int(4byte),long(8byte) 浮点类型:float(4byte),double(8byte) 字符类型:char(2byte) 逻辑类型:boolean(false/true 1byte) 2 说出5个启动时异常 RunTimeException ------NullPointerException ------ArrayIndexOutOfBoundsException ------ClassCastException ------NumberFormatException 3 HashMap 和HashTable的区别: 1HashMap 允许空键值对,HashTable不允许 2HashMap不是线程安全的,HashTable是 3HashMap直接实现Map接口,HashTable继承Dictionary类 4. ArrayList,Vector,LinkedList存储性能和区别 它们都实现了List接口 ArrayList和Vector都是基于数组实现的 LinkedList基于双向循环链表(查找效率低,添加删除容易) ArrayList不是线程安全的而Vector是线程安全的,所有速度上 ArrayList高于Vector 5. Collection和Collections的区别 Collection是集合类的上级接口,继承与他的接口主要有Set和List Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全等操作。 6 List、Map、Set三个接口,存取元素时,各有什么特点? List以特定次序来持有元素,可有重复元素。 Set 无法持有重复元素,内部排序 Map保存key-value值,value可多值。 7 final,finally,finalize的区别 Final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承 Finally 是异常处理语句结构的一部分,表示总是执行 Finalize 是Object类的一个方法,在垃圾收集时的其他资源回收,例如关闭文件等。 8 Overload和Override的区别。Overload的方法是否可以改变返回值的

JAVA中常见异常类总结

1)、NullPointerException(值为空):见的最多了,其实很简单,一般都是在null对象上调用方法了。 String s=null; boolean eq=s.equals("");//NullPointerException 这里你看的非常明白了,为什么一到程序中就晕呢? public int getNumber(String str){ if(str.equals("A"))return1; else if(str.equals("B"))return2; } 这个方法就有可能抛出NullPointerException,我建议你主动抛出异常,因为代码一多,你可能又晕了。 public int getNumber(String str){ if(str==null) {throw new NullPointerException("参数不能为空");} //你是否觉得明白多了if(str.equals("A"))return1; else if(str.equals("B"))return2; } 2)、NumberFormatException:继承IllegalArgumentException,字符串转换为数字时出现。比如int i=Integer.parseInt("ab3"); 3)、ArrayIndexOutOfBoundsException:数组越界。比如int[]a=new int[3];int b=a[3];

4)、StringIndexOutOfBoundsException:字符串越界。比如String s="hello";char c=s.chatAt(6); 5)、ClassCastException:类型转换错误。比如Object obj=new Object(); String s=(String)obj; 6)、UnsupportedOperationException:该操作不被支持。如果我们希望不支持这个方法,可以抛出这个异常。 既然不支持还要这个干吗?有可能子类中不想支持父类中有的方法,可以直接抛出这个异常。 7)、ArithmeticException:算术错误,典型的就是0作为除数的时候。 8)、IllegalArgumentException:非法参数,在把字符串转换成数字的时候经常出现的一个异常,我们可以在自己的程序中好好利用这个异常。

Java代码常用工具类整理归纳

Java代码常用工具类整理归纳 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java代码中使用最频繁及最通用的Java工具类。欢迎大家阅读! 一、https://www.sodocs.net/doc/596019684.html,mons.io.IOUtils closeQuietly:关闭一个IO流、socket、或者or且不抛出异常,通常放在finally块 toString:转换IO流、 Uri、 byte[]为String copy:IO流数据复制,从输入流写到输出流中,最大支持2GB toByteArray:从输入流、URI获取byte[] write:把字节. 字符等写入输出流 toInputStream:把字符转换为输入流 readLines:从输入流中读取多行数据,返回List copyLarge:同copy,支持2GB以上数据的复制 lineIterator:从输入流返回一个迭代器,根据参数要求读取的数据量,全部读取,如果数据不够,则失败。 二、https://www.sodocs.net/doc/596019684.html,mons.io.FileUtils Directory:删除文件夹 readFileToString:以字符形式读取文件内容 Queitly:删除文件或文件夹且不会抛出异常 copyFile:复制文件 writeStringToFile:把字符写到目标文件,如果文件不存在,则创建 forceMkdir:强制创建文件夹,如果该文件夹父级目录不存在,则创建父级 write:把字符写到指定文件中 listFiles:列举某个目录下的文件(根据过滤器) copyDirectory:复制文件夹 forceDelete:强制删除文件 三、https://www.sodocs.net/doc/596019684.html,ng.StringUtils isBlank:字符串是否为空(trim后判断) isEmpty:字符串是否为空(不trim并判断) equals:字符串是否相等 join:合并数组为单一字符串,可传分隔符 split:分割字符串 EMPTY:返回空字符串 trimToNull:trim后为空字符串则转换为null replace:替换字符串

java 中常用的方法总结

8月1日 练习: 合理覆盖Cat数据类型的,equals()方法 Cat.java 1 覆盖hashCode() 返回的整型值是唯一的 int hashCode() 用法: 一般使用String提供hashCode的编码+基本数据类型 hashCode 生成原则: 1 当对象内容一致时,生成的hashCode必须是一样的 2 当对象内容不致时,生成的hashCode必须是唯一的 HashtableTest1.java hashtable 中的key如果是自定义数据类型,那么它必须覆盖equals()和hashCode() //考试 1 hashCode() ArrayList * Hashtable * 2 其他的存储方式: LinkedList //特点:可以删除指定位置数据 练习: 向LinkedList添加: A B C D 打印出时为:DCBA LinkedListTest.java 练习(MyQueueTest.java): 模拟一个队伍(队列),去买票一个动作 思路: 1 模拟一个队列(add) 2 模拟出列(removeXXXX) //先买票的人,先出队列——先入先出 队伍是一个特殊数据结构, 特点:FIFO(先入先出) HashSet //不允许重复元素 集合框架类的特点: 1 Collection 接口是一组允许重复的对象 2 Set接口继承Collection,但不允许重复使用自己内部的一个排列机制 3 List接口继承Collection,允许重复,以元素安插的次序来放置元素,不会重新排列。 4 Map接口是一组成对的键——值对象,即所持有的是key—value pairs。Map中不能有重复的key。拥有自己内部机制。 5 在集合框架类中有两大类接口:

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这个引用变量不再指向它了。通过上面的说明,我们很容易导出另一个结论,如果经常对字符串进行各种各样的修改,

相关主题