my-Java中常用类

my-Java中常用类
my-Java中常用类

Java中常用类

API (Application Programming Interface ),应用编程接口。

https://www.360docs.net/doc/ee23886.html,ng.Object 类

https://www.360docs.net/doc/ee23886.html,ng 包在使用的时候无需显式导入,编译时由编译器自动帮助我们导入。

当打印引用时,实际上会打印出引用所指对象的toString()方法的返回值,因为每个类都直接或间接地继承自Object,而Object 类中定义了toString(),因此每个类都有toString()这个方法。

Example:

public class TestObject

{

public static void main(String[] args)

{

Object obj = new Object();//只有一个无参的构造方法

System.out.println(obj);

System.out.println(obj.toString());

String str = “测试”;

System.out.println(str);

System.out.println(str.toString());

//为什么打印结果相同,很容易想到String类重写了Object的toString()方法}

}

class Person

{

public String toString()

{

return “Person类重写了toString()方法”;

}

}

关于进制的表示:16 进制,逢16 进一,16 进制的数字包括:0~9,A,B,C,D,E,F

equals()方法

该方法定义在Object 类当中,因此Java 中的每个类都具有该方法,对于Object类的equals()方法来说,它是判断调用equals()方法的引用与传进来的引用是否一致,即这两个引用是否指向的是同一个对象。对于Object 类的equals()方法来说,它等价于==。

对于String类的equals()方法来说,它是判断当前字符串与传进来的字符串的内容是否一致。

对于String 对象的相等性判断来说,请使用equals()方法,而不要使用==。

String类

String类在java中算是比较特殊的类.String类是不可变类,即String对象声明后,将不可修改。

String 是常量,其对象一旦创建完毕就无法改变。当使用+拼接字符串时,会生成新的String 对象,而不是向原有的String 对象追加内容。

实例化String类有两种方法:

●直接赋值的方式例如:String name=”张三”;

●直接调用String类中构造方法

String name = new String(“张三”);

String Pool(字符串池)

String s = “aaa”; (采用字面值方式赋值)

1) 查找String Pool中是否存在“aaa”这个对象,如果不存在,则在String Pool 中

创建一个“aaa”对象,然后将String Pool 中的这个“aaa”对象的地址返回来,赋给引用变量s,这样s会指向String Pool 中的这个“aaa”字符串对象

2) 如果存在,则不创建任何对象,直接将String Pool 中的这个“aaa”对象地址返

回来,赋给s 引用。

String s = new String(“aaa”);

1) 首先在String Pool 中查找有没有“aaa”这个字符串对象,如果有,则不在String

Pool中再去创建“aaa”这个对象了,直接在堆中(heap)中创建一个“aaa”字符串对象,然后将堆中的这个“aaa”对象的地址返回来,赋给s 引用,导致s 指向了堆中创建的这个“aaa”字符串对象。

2) 如果没有,则首先在String Pool 中创建一个“aaa“对象,然后再在堆中(heap)

创建一个”aaa“对象,然后将堆中的这个”aaa“对象的地址返回来,赋给s

引用,导致s 指向了堆中所创建的这个”aaa“对象。

题目一:

String str1 = new String("hello");

String str2 = new String("hello");

以上代码创建了几个对象?

创建了3个对象,堆区两个,常量池中一个。

使用String时,最好不要用new关键字,因为new String,会创建两个对象。

注意:只有采用双引号赋值字符串,那么在编译期将会放到方法区中的常量池中,如果运行时对字符串相加或相减,它是放到了堆中。

题目二:

给定以下字符串:TOM:90|FRANK:95|JSON:88

要求拆分,并打印出如下效果:

TOM-->90

FRANK-->95

JSON-->88

/*

功能:拆分字符串

*/

class TestString2

{

public static void main(String[] args)

{

String str = "TOM:90|FRANK:95|JSON:88";

String[] s1 = str.split("\\|");//|在java中表示“或”因此需要转义

for(String s : s1)

{

String[] s2 = s.split(":");

System.out.println(s2[0]+"-->"+s2[1]);

}

/*

for(int i = 0;i

{

String[] s2 = s1[i].split(":");

System.out.println(s2[0]+"-->"+s2[1]);

}

*/

}

题目三:

给定一个email地址,判断其是否合法的。

(提示:这里合法的要求只考虑email地址中是否有字符‘@’和‘.’并且‘@’必须在‘.’之前)

/*

功能:简单的验证email格式(包括@和.两个字符,并且@在.之前)

*/

class TestString3

{

public static void main(String[] args)

{

System.out.println(validateEmail("a@https://www.360docs.net/doc/ee23886.html,"));

}

private static boolean validateEmail(String email)

{

boolean flag = true;

if(email.indexOf("@")==-1 || email.indexOf(".")==-1 )

flag = false;

else if(email.indexOf("@") > email.indexOf(".") )

flag = false;

return flag;

}

}

String是不可变对象,如果多个字符串进行拼接,将会形成多个对象,这样可能造成内存溢出,会给垃圾回收带来工作量,如下面的应用最好不要用String。

public class TestString4 {

pubilc static void main(String[] args) {

String s = "";

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

/*以下语句会产生大量的对象,因为String为不可变对象,存在大量的对象相加或相减的时候,一般不建议使用String,建议使用StringBuffer或StringBuilder,优先选择StringBuilder,采用JProbe可以对内存进行分析*/

s += i;

}

}

}

包装类(Wrapper Class)

针对于原生数据类型的包装。所有的包装类(8个)都位于https://www.360docs.net/doc/ee23886.html,ng包下。

Java 中的8个包装类分别是:Byte,Short,Integer,Long,Float,Double,Character,Boolean。他们的使用方式都是一样的,可以实现原生数据类型与包装类型的双向转换。

基本类型的包装类主要提供了更多的实用操作,这样更容易处理基本类型。所有的包装类都是final的,所以不能创建其子类。

基本类型包装类

byte Byte

short Short

char Character

int Integer

long Long

float Float

double Double

boolean Boolean

类层次结构:

Example:

Public class TestInteger {

public static void main(String[] args) {

int i1 = 100;

Integer i2 = new Integer(i1);

double i3 = i2.doubleValue();

String s = "123":

int i4 = Integer.parseInt(s);

Integer i5 = new Integer(s);

Integer i6 = Integer.valueOf(s);

}

}

在JDK1.5以前,包装类和基本类型做运算时,必须将包装类转换成基本类型才可以,而JDK1.5提供Auto-boxing/unboxing(自动装箱和拆箱)

?自动将基础类型转换为对象

?自动将对象转换为基础类型

Example:

TestInteger2.java

public class TestInteger2 {

public static void main(String[] args) {

//在JDK1.5以前的版本,必须如下赋值

Integer i1 = new Integer(100);

//JDK1.5及以后版本,自动装箱

Integer i2 = 100;

//JDK1.5及以后版本,自动拆箱

int i3 = i2;

//在JDK1.5之前版本,必须如下赋值

int i4 = i2.intV alue();

}

}

Stringbuffer和StrubgBuilder

StringBuffer

StringBuffer称为字符串缓冲区,它的工作原理是:预先申请一块内存,存放字符序列,如果序列满了,会重新改变缓冲区的大小,以容纳更多的字符序列。StringBuffer是可变对象,这个是String最大的不同。

public class TestStringBuffer {

public static void main(String[] args) {

//StringBuffer sbString = new StringBuffer();

//完全可以修改为使用StringBuilder

StringBuilder sbString = new StringBuilder();

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

//sbString.append(i);

//sbString.append(",");

//也可以采用方法链编程

sbString.append(i).append(",");

System.out.println(sbString.toString());

//去除最后的逗号

System.out.println();

System.out.println(sbString.toString().substring(0,sbString.toString().length()-1));

}

}

}

StringBuilder

用法同StringBuffer,StringBuilder和StringBuffer的区别是:StrinbBuffer中所有的方法都是同步的,是线程安全的,但速度慢,StringBuilder的速度快,但不是线程安全的。

日期类

常用的日期类:

java.util.Date

java.text.SimpleDateFormat

java.util.Calendar

TestDate.java

public class TestDate {

public static void main(String[] args) throws Exception {

//取得今天的日期

Date today = new Date();

System.out.println(today);

//格式化日期

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

System.out.println(sdf.format(today));

System.out.println(new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒").format(today));

//取得2012年9月16日是星期几?

Date d = new SimpleDateFormat("yyyy-MM-dd").parse("2012-09-16");

Calendar c = Calendar.getInstance();

//将日历修改为2012年9月16日

c.setTime(d);

//取得星期几

System.out.println(c.get(Calendar.DAY_OF_WEEK));

}

}

数字类

常用数字类:

java.text.DecimalFormat

java.math.BigDecimal:可以精确计算,特别在财务系统或银行系统

TestDecimal.java

import java.text.*;

public class TestDecimal {

public static void main() {

//加入千分位,保留两位小数

DecimalFormat df = new DecimalFormat("###,###,###.##");

System.out.println(df.format(12345.1234));

//加入千分位,保留六位小数,不够补0

System.out.println(new DecimalFormat("###,###,###,######").format(123456.1234));

System.out.println(new DecimalFormat("###,###,###,000000").format(123456.1234));

}

}

TestBigDecimal.java

import java.math.BigDecimal;

public class TestBigDecimal {

public static void main(String[] args) {

BigDecimal v1 = new BigDecimal(10);

BigDecimal v2 = new BigDecimal(20);

//加法运算

BigDecimal v3 = v1.add(v2);

System.out.println(v3);

}

}

Random

例子:

生成5个0~100之间的随机数。

import java.util.Random;

public class TestRandom {

public static void main(String[] args) {

Random r = new Random();

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

System.out.println(r.nextInt(100));

}

}

}

Enum枚举

1.为什么使用枚举?

TestEnum.java

public class TestEnum {

/*以下返回1或0存在一些问题,在编译时出现错误不容易发现,如:把返回值1改为了11,我们的程序仍然可以编译通过,因为1和11都是合法的数值,编译器无法检查(对于bug发现的越早越好,最好在编译阶段将所有的bug全部消灭)*/

public static void main(String[] args) {

int ret = method();

if(ret == 1) {

System.out.println("正确!");

}

if(ret == 0) {

System.out.println("错误!");

}

}

//正确返回1,错误返回0

private static int method() {

try {

//处理逻辑的代码

return 1;

} catch(Exception e) {

return 0;

}

}

}

2.改进以上的例子

TestEnum2.java

public class TestEnum2 {

/*此种方案比第一种方案好一些,有一个统一的约定,成功用1表示,失败用0表示

但也存在问题,如果不遵循约定,就会出现问题

成功返回的是SUCCESS,但是我们也可以改成数值型的-1,因为他们都是int类型,所以编译器认为都是合法的。

这样的话在编译阶段,就不能发现此问题,直到运行阶段才会发现该错误*/

private static final int SUCCESS = 1;

private static final int FAILURE = 0;

public static void main(String[] args) {

int ret = method();

if(ret == SUCCESS ) {

System.out.println("正确!");

}

if(ret == FAILURE) {

System.out.println("错误!");

}

}

//正确返回SUCCESS,错误返回FAILURE

private static int method() {

try {

//处理逻辑的代码

//return SUCCESS ;

return -1;

} catch(Exception e) {

return FAILURE;

}

}

}

3.采用枚举完善上面的例子

使用枚举类型,可以限定取值的范围,程序在编译阶段,就可以提早发现bug,这样的话,我们的程序就会更加的健壮。

TestEnum3.java

public class TestEnum3{

public static void main(String[] args) {

Result ret = method();

if(ret == Result .SUCCESS ) {

System.out.println("正确!");

}

if(ret == Result .FAILURE) {

System.out.println("错误!");

}

}

//正确返回SUCCESS,错误返回FAILURE

private static Result method() {

try {

//处理逻辑的代码

return Result .SUCCESS ;

} catch(Exception e) {

return Result .FAILURE;

}

}

enum Result {

SUCCESS,FAILURE

}

}

javamath类常用方法

例如求平方根的(n),求a的b次方(a, b),求绝对值(n)等很多。下面是一些演示。publicclassMathTest { publicstaticvoidmain(String[]args) { intn=16; ? 3)); ? ? } } publicclassMathDemo{ publicstaticvoidmain(Stringargs[]){ /** *abs求绝对值 */ 的时候会取偶数 */ // // // // // // // // // // /** *round四舍五入,float时返回int值,double时返回long值 */ //10 //11 //11 //11 //-10 //-11 //-11 //-10 } }

函数(方法) 描述 IEEEremainder(double,double) 按照IEEE754标准的规定,对两个参数进行余数运算。 abs(inta) 返回int值的绝对值 abs(longa) 返回long值的绝对值 abs(floata) 返回float值的绝对值 abs(doublea) 返回double值的绝对值 acos(doublea) 返回角的反余弦,范围在到pi之间 asin(doublea) 返回角的反正弦,范围在-pi/2到pi/2之间 atan(doublea) 返回角的反正切,范围在-pi/2到pi/2之间 atan2(doublea,doubleb) 将矩形坐标(x,y)转换成极坐标(r,theta) ceil(doublea) 返回最小的(最接近负无穷大)double值,该值大于或等于参数,并且等于某个整数cos(double) 返回角的三角余弦 exp(doublea) 返回欧拉数e的double次幂的值 floor(doublea) 返回最大的(最接近正无穷大)double值,该值小于或等于参数,并且等于某个整数log(doublea) 返回(底数是e)double值的自然对数 max(inta,intb) 返回两个int值中较大的一个 max(longa,longb) 返回两个long值中较大的一个 max(floata,floatb) 返回两个float值中较大的一个 max(doublea,doubleb) 返回两个double值中较大的一个 min(inta,intb) 返回两个int值中较小的一个 min(longa,longb) 返回两个long值中较小的一个 min(floata,floatb)

实验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中常用类的常用方法

JAVA中常用类的常用方法 一、类 1、clone()方法 创建并返回此对象的一个副本。要进行“ 克隆” 的对象所属的类必须实现. Cloneable接口。 2、equals(Object obj)方法 功能:比较引用类型数据的等价性。 等价标准:引用类型比较引用,基本类型比较值。 存在特例:对File、String、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)

JAVA中常用的集合类型

JAVA常用的高级数据类型——集合类型 一、JAVA语言中的集合类型主要有三种形式:Set(集)、List(列表)、Map(映射),每种类型的集合都包括三部分:接口、实现和算法。 a)集合接口实现集合的操作和集合的具体功能实现细节的相互分离—— Set接口、List接口、Map接口 b)集合的具体功能实现类实质上是各种可重用的数据结构的具体表示 List接口的实现类有ArrayList、LinkedList、Stack和Vector等 集合类,Vector 类提供了实现可增长数组的功能,随着更多元素加 入其中,数组变的更大。在删除一些元素之后,数组变小。 Set接口的实现类有HashSet、LinkedHashSet和TreeSet等集合类 Map接口的实现类有HashMap、Hashtable、LinkedHashMap、Properties和TreeMap等集合类。 c)集合的算法指可以对实现集合接口的各个集合的功能实现类提供如排 序、查找、交换和置换等方面的功能实现。 二、List接口 1.List接口代表有序的集合,可以对List接口代表的有序集合中每个元素 的插入位置进行精确地控制,并利用元素的整数索引(代表元素在集合中的位置)访问元素中的各个成员,List接口代表的集合是允许出现重复元素的。 2.List接口主要成员方法: 1)void add(int index,E element)在列表指定位置插入指定元素 2)E get(int index) 返回结合中指定位置的元素 3)E remove(int index) 移除集合中指定位置的元素 4)E set(int index,E elment) 用指定元素替换集合中指定位置的元素 5)boolean add(E o) 向列表的尾部追加指定的元素 6)boolean contains(Object o) 如果列表包含指定的元素,则返回true。 7)boolean isEmpty() 如果列表不包含元素,则返回 true。 8)int size() 返回列表中的元素数 9)Iterator iterator()返回以正确顺序在列表的元素上进行迭代的迭代器。 3.List的实现类 List在数据结构中分别表现为数组(ArrayList)、向量(Vector)、链表(LinkedList)、堆栈(Stack)和队列等形式。 Vector集合和ArrayList集合都是采用数组形式来保存对象,区别在于ArrayList集合本身不具有线程同步的特性,不能用在多线程的环境下,可以使用ArrayList集合能够节省由于同步而产生的系统性能的开销。而Vector集合实现了对线程同步的支持,因此在多线程并发访问的应用环境下,该集合本身能够保证自身具有线程安全性。在多线程的并发访问中,可以将Vector集合的对象实例设计为类中的成员属性,而应该将ArrayList 集合的对象实例设计为局部对象。 public class UserInfo{ List oneVector=new Vector(); public void execute(){

Java常用类

常用类 (1)字符串相关类(String,StringBuffer) 1)https://www.360docs.net/doc/ee23886.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.360docs.net/doc/ee23886.html,ng.Enum类型;

JAVA中常用类的常用方法

JAVA屮常用类的常用方法 一.java?丨ang.Object 类 1、clone()方法 创建丼返M此对象的一个副木。要进行“克隆”的对象所属的类必须实现https://www.360docs.net/doc/ee23886.html,ng. Cloneable 接口。 2、equals(Objectobj)方法 0 功能:比较引用类型数据的等价性。 0 等价标准.?引用类型比较引用,基木类型比较值。 0 存在特例.?对File、String、Date及封装类等类型来说,是比较类型及对象的内稃而+ 考虑引用的是否为同一实例。 3、finalize〇方法 当垃圾丨"丨收器确定>(、存在对该对象的更多引用时,由对象的垃圾丨"丨收器调用此方法。 4、hashCode〇方法返 回该对象的哈希码值。 5、notify〇方法 唤醒在此对象监视器上等待的中?个线祝。 6、notifyAII〇方法 唤醒在此对象监视器上等待的所有线程= 7、toString()方法 返W该对象的字符串表示。在进行String与其它类型数据的连接操作时,&动调用tostringo 方法。可以根据耑要重写toStringO方法。 8、wait()方法 在其他线程调用此对象的n〇tify()方法或notifyAIIO方法前,异致当前线程等待。 二、字符串相关类 I String 类 charAt(int index)返回指定索引处的char值。compareTo{String anotherString)按字

典顺序比较两个字符串。compareTolgnoreCase(Stringstr)按字典顺序比较两个字 符串,不考虑人小写。concat(String str)将指定字符串连接到此字符串的结尾。 endsWith(String suffix)测试此字符串是否以指定的〗?缀结束。equals{Object anObject)将此字符串与指定的对象比较。 equalslgnoreCase(String anotherString)将此String 与另一个String 比较,考虑人小'与’。indexOf(int ch)返H指定字符在此字符串屮第一次出现处的索引。 indexOf(String str)返回第一次出现的指定子字符串在此字符串屮的索引, lastlndexOf(intch)返回指定字符在此字符串中最后??次出现处的索引。 length()返|n丨此字符串的长度。 replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用newChar替换此字符串中出现的所有oldChar得到的。 split(String regex)根据给定正则表达式的匹配拆分此字符串。startsWith{String prefix)测试此字符 串是否以指定的前缀开始。substring(int beginlndex) 返回一个新的字符串,它是此字符串的一个子字符串。该子字符串始于指定索引处的字符,一直到此字符串末尾。 substring(int beginlndex, int endlndex) 返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的beginlndex 处开始,一直到索引endlndex-1处的字符。 t〇CharArray()将此字符串转换为一个新的字符数组。

史上最全Java基础知识点归纳

史上最全Java基础知识点归纳 写这篇文章的目的是想总结一下自己这么多年来使用Java的一些心得体会,主要是和一些Java基础知识点相关的,所以也希望能分享给刚刚入门的Java 程序员和打算入Java开发这个行当的准新手们,希望可以给大家一些经验,能让大家更好学习和使用Java。 这次介绍的主要内容是和J2SE相关的部分,另外,会在以后再介绍些J2EE 相关的、和Java中各个框架相关的内容。 经过这么多年的Java开发,以及结合平时面试Java开发者的一些经验,我觉得对于J2SE方面主要就是要掌握以下的一些内容。 1.JVM相关(包括了各个版本的特性) 对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可。不过对于一个有着3年以上Java经验的资

深开发者来说,不会JVM几乎是不可接受的。 JVM作为Java运行的基础,很难相信对于JVM一点都不了解的人可以把Java语言吃得很透。我在面试有超过3年Java经验的开发者的时候,JVM几乎就是一个必问的问题了。当然JVM不是唯一决定技术能力好坏的面试问题,但是可以佐证Java开发能力的高低。 在JVM这个大类中,我认为需要掌握的知识有: JVM内存模型和结构 GC原理,性能调优 调优:Thread Dump,分析内存结构 class二进制字节码结构,class loader体系,class加载过程,实例创建过程 方法执行过程 Java各个大版本更新提供的新特性(需要简单了解) 2.Java的运行(基础必备) 这条可能出看很简单,Java程序的运行谁不会呢?不过很多时候,我们只是单纯通过IDE去执行Java程序,底层IDE又是如何执行Java程序呢?很多人并不了解。

JAVA中常用类的常用方法

JAVA中常用类的常用方法 一、https://www.360docs.net/doc/ee23886.html,ng.Object类 1、clone()方法 创建并返回此对象的一个副本。要进行“克隆”的对象所属的类必须实现https://www.360docs.net/doc/ee23886.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 处开

Java类集合之List详解

Java集合框架之List详解 ArrayList 首先我们熟悉下ArrayList类中常用方法的使用。 1)添加:public boolean add(Object e):将指定的元素(对象)添加到此列表的尾部 2)获取:public Object get(int index):返回此列表中指定位置(索引)上的元素。 3)元素的个数:public int size():返回此列表中的元素数。 4)清空:public void clear():移除此列表中的所有元素。此调用返回后,列表将为空。 5)是否为空:public boolean isEmpty():如果此列表中没有元素,则返回 true 6)移除(删除):public E remove(int index):移除此列表中指定位置上的元素。向左移动所有后续元素(将其索引减 1)。 7)移除(重载):public boolean remove(Object o):移除此列表中首次出现的指定元素(如果存在)。如果列表不包含此元素,则列表不做改动。更确切地讲,移除满足 (o==null ? get(i)==null : o.equals(get(i))) 的最低索引的元素(如果存在此类元素)。如果列表中包含指定的元素,则返回 true (或者等同于这种情况:如果列表由于调用而发生更改,则返回 true)。8)获得索引:public int indexOf(Object o): 返回此列表中首次出现的指定元素的索引,或如果此列表不包含元素,则返回 -1。更确切地讲,返回满足(o==null ? get(i)==null : o.equals(get(i))) 的最低索引 i ,如果不存在此类索引,则返回 -1。 如何使用这些方法,代码如下: import java.util.ArrayList; public class ArrayListTest { public static void main(String[] args) { ArrayList list=new ArrayList(); /* * 添加 */ list.add("hello"); list.add(" world"); list. add(" welcome"); /* * 获得 */ String s1=(String)list.get(0);

Java基础入门教程(适合所有初学者)

第1章 Java语言概述与面向对象思想 1 1.1 Java语言的发展 1 1.1.1 Java语言的产生 1 1.1.2 Java语言的发展 1 1.2 Java语言的特点 2 1.3 面向对象与面向过程的差异 3 1.3.1 面向过程思想回顾 4 1.3.2 面向对象思想介绍 4 1.4 面向对象程序设计中的主要概念和特征 4 1.4.1 主要概念 5 1.4.2 主要特征 5 *1.5 Java与C++的差异 5 1.6本章小结5 习题 5 第2章 Java语言开发环境 6 2.1 JDK 6 2.1.1 JDK的简介6 2.1.2 JDK的构成6 2.1.3 JDK的使用6 2.2 IDE 8 2.2.1 IDE简介8 2.2.2 JBuilder 9 2.2.3 Eclipse 9 2.2.4 相关资源9 2.3 Project管理9 2.3.1 Project的含义9 2.3.2 可行的Project组织模式9 2.3.3 主要开发工具的Project目录10 2.4 本章小结10 习题10 第1章 Java语言概述与面向对象思想 1.1 Java语言的发展 1.1.1 Java语言的产生以介绍面向对象编程的基本概念、基本理论为重点,结合Java语言的语法规则、编程特点和设计思想、强调容易发生错误和编程应注意的地方,使学生能对Java 技术有一个总体了解,通过本课程学习,使学生掌握Java语言的基础知识,理解和掌握面向对象程序设计的基本思想,熟练地使用Java语言进行程序的编写、编译以及调试工作 上世纪90年代初期,Sun公司在研究一种适用于未来的智能设备的编程语言,该语言要具有一些新的特性,以避免C++的一些不足。 该语言起初命名为Oak,来源于语言作者Gosling办公室窗外的一棵橡树(Oak)。后来在注册时候遇到了冲突,于是就从手中的热咖啡联想到了印度尼西亚一个盛产咖啡的岛屿,中文名叫爪哇,Java语言得名于此。 随着Internet的迅速发展,Web应用日益广泛,Java语言也得到了迅速发展。1994年,Gosling

java常用词汇

Abstract class 抽象类:抽象类是不允许实例化的类,因此一般它需要被进行扩展继承。 Abstract method 抽象方法:抽象方法即不包含任何功能代码的方法。 Access modifier 访问控制修饰符:访问控制修饰符用来修饰Java中类、以及类的方法和变量的访问控制属性。 Anonymous class 匿名类:当你需要创建和使用一个类,而又不需要给出它的名字或者再次使用的使用,就可以利用匿名类。 Anonymous inner classes 匿名内部类:匿名内部类是没有类名的局部内部类。 API 应用程序接口:提供特定功能的一组相关的类和方法的集合。 Array 数组:存储一个或者多个相同数据类型的数据结构,使用下标来访问。在Java中作为对象处理。 Automatic variables 自动变量:也称为方法局部变量method local variables,即声明在方法体中的变量。 Base class 基类:即被扩展继承的类。HP0-538 Blocked state 阻塞状态:当一个线程等待资源的时候即处于阻塞状态。阻塞状态不使用处理器资源 Call stack 调用堆栈:调用堆栈是一个方法列表,按调用顺序保存所有在运行期被调用的方法。 Casting 类型转换 :即一个类型到另一个类型的转换,可以是基本数据类型的转换,也可以是对象类型的转换。 char 字符:容纳单字符的一种基本数据类型。 Child class 子类:见继承类Derived class Class 类:面向对象中的最基本、最重要的定义类型。350-018 Class members 类成员:定义在类一级的变量,包括实例变量和静态变量。 Class methods 类方法:类方法通常是指的静态方法,即不需要实例化类就可以直接访问使用的方法。 Class variable 类变量:见静态变量Static variable

java常用的几种集合

集合类是放在java.util.*;这个包里。集合类存放的都是对象的引用,而非对象本身,为了说起来方便些,我们称集合中的对象就是指集合中对象的引用(reference)。引用的概念大家不会忘了吧,在前边我们讲数据类型时讲的。 集合类型主要有3种:set(集)、list(列表)、map(映射)和Queue(队列)。//队列为jdk5中的加上的 (1) Set 集(set)是最简单的一种集合,它的对象不按特定方式排序,只是简单的把对象加入集合中,就像往口袋里放东西。对集中成员的访问和操作是通过集中对象的引用进行的,所以集中不能有重复对象。我们知道数学上的集合也是Set这个,集合里面一定是没有重复的元素的。 (2)List 列表(List)的主要特征是其对象以线性方式存储,没有特定顺序,只有一个开头和一个结尾,当然,它与根本没有顺序的Set是不同的。它是链表嘛,一条链肯定有顺序这个顺序就不一定了。 (3)Map 映射(Map),这个在java里不是地图的意思,其实地图也是映射哈。它里面的东西是键-值对(key-value)出现的,键值对是什么呢?举个例子,比如我们查字典,用部首查字法。目录那个字就是键,这个字的解释就是值。键和值成对出现。这样说可以理解吧。这也是很常用的数据结构哦。 (4)Queue 在jdk5.0以前,通常的实现方式是使用java.util.List集合来模仿Queue。Queue的概念通过把对象添加(称为enqueuing的操作)到List的尾部(即Queue的后部)并通过从List的头部(即Queue的前部)提取对象而从List中移除(称为dequeuing的操作)来模拟。你需要执行先进先出的动作时可以直接使用Queue接口就可以了。 这4个东西,有时候功能还不太完善,需要有些子类继承它的特性。Set的子接口有TreeSet,SortedSet,List的有ArrayList等,Map里有HashMap,HashTable等,Queue里面有BlockingQueue等。我们来看看例子吧:

JAVA技术--Java基础知识常见考试题JAVA技术.doc

一、单选题 1.对类:(B) public class Test( //...do something } 下面那个正确地定义了类Test的构造函数。 A)public void Test() () B)publicTest()(} C ) public static Test() (} D) publicTest(); 2.下面哪个函数是public void example()(...)的重载函数。(A) A)public void example( float f)(...) B)public int example() (...) C)public void example2()(...} D)public int example_overLoad ()(...) 3.下面的代码段中,执行之后i和j的值是_C_。 int i = 1; intj; j = i++; A)1, 1 B) 1,2 C) 2, 1 D) 2,2 4.以下for循环的执行次数是_B o for(int x=0,y=0;(y !=0)&&(x<4) ;x++); A)无限次B) 一次也不执行 C)执行4次D)执行3次 5.下面程序的输出结果是—C o public class People( String name; int id; public People( String str, int n )( name = str; id = n; } public String toString(){ return id + " :” + name; } public String print()(

集合问题的类型与解法

集合问题的类型与解法 我们知道,集合问题是近几年高考的热点问题之一,基本上是每卷必有集合问题的一个五分小题;从题型上看为选择题或填空题,难度系数较低。纵观近几年的高考试题,集合问题归结起来主要包括:①集合元素的问题;②集合与集合的关系问题;③集合的运算问题;④集合的新概念问题等几种类型。各种类型结构上具有各自的特征,解答方法也各不相同,那么在解答集合问题时,到底应该如何抓住问题的结构特征,快捷,准确地解答问题呢?下面通过典型例题的详细解析来回答这个问题。 【典例1】解答下列问题: 1、(1)已知集合A={(x,y)|2x+2y=1},B={(x,y)|y=x},则A∩B中元素的个数 为() A 3 B 2 C 1 D 0 (2)已知集合A={1,2,3,4},B={2,4,6,8},则A∩B中元素的个数为() A 1 B 2 C 3 D 4 【解析】 【知识点】①集合表示的基本方法;②交集的定义,性质与运算方法;③集合元素的定义与性质。 【解题思路】(1)运用交集的运算方法,结合集合的表示方法,通运算求出A∩B,利用元素的性质就可得出选项;(2)运用交集的运算方法,结合集合的表示方法,通运算求出A ∩B,利用元素的性质就可得出选项。 【详细解答】(1)如图,Q由2x+2y=1,得x= 2 , y=x,y= 2 , 或,∴A∩B={),(,)} y=- 2 ,?B正确,∴选B;(2)Q A∩B={2,4},?B正确,∴选B。 2、已知集合A={1,2},B={a,2a+3},若A∩B={1},则实数a的值为; 【解析】 【知识点】①集合表示的基本方法;②交集的定义,性质与运算方法;③集合相等的定义与性质;④方程的定义与解法。 【解题思路】运用交集的运算方法和集合的表示方法,结合问题条件可知1∈B,由2a+3 ≥3,从而得到a=1。 【详细解答】Q A∩B={1},∴1∈B,Q2a+3 ≥3,∴a=1。 3、设集合A={x|1≤x≤5},Z为整数集,则集合A∩Z中元素的个数是()

JAVA中常用的类

public static void main(String[] args) { String str1; str1 = "你好"; // 使用字符串常量构造一个字符串 String str2 = new String("你好"); // String类中重写了父类Object类的equals方法 // String类中的equals方法比较的是字符串的内容 // 使用String类中的equals方法时,建议将字符串常量写在前面 String str3 = null; System.out.println("你好".equals(str3));//正确写法 //System.out.println(str3.equals("你好"));//错误写法 // 使用equals方法 System.out.println(str1.equals(str2));//true System.out.println(str1 == str2);//false

// 使用char数组构造一个字符串 char [] ch1 = {'a', 'b', 'c'}; String str4 = new String(ch1); System.out.println("str4: " + str4); char [] ch2 = {'a', 'b', 'c', 'd', 'e', 'f'}; String str5 = new String(ch2, 2, 2); System.out.println("str5: " + str5); // 使用byte数组构造一个字符串 //byte [] by1 = {-50, 3, 100}; byte [] by1 = "测试".getBytes(); String str6 = new String(by1); System.out.println("str6: " + str6); // String类中的equals方法和等号String str7 = "西安网星"; String str8 = "西安网星"; System.out.println(str7.equals(str8));//true

常用的几种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常用类库介绍

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

https://www.360docs.net/doc/ee23886.html,ng是Java语言最广泛使用的包。它所包括的类是其他包的基础,由系统自动引入,程序中不必用import语句就可以使用其中的任何一个类。https://www.360docs.net/doc/ee23886.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常用类知识点总结 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对象建立之后不能再改变,所以对于每一个不同的字符

相关文档
最新文档