java学习笔记

来源:互联网 发布:域名证书生成 编辑:程序博客网 时间:2024/06/01 09:40

1.foreach

for(type variablename :array | collect){

//variablename表示依次迭代每个元素

}

例:

String[]  books = {"aaa","bbb","ccc"};

for(String book : books){

System.out.println(book);

}

注意:在使用foreach迭代访问数组元素时,foreach中的循环变量属于临时变量,如果希望改变数组元素时,不要使用这种方法。


2.不要让子类修改,访问的方法,属性应该用private修饰;如果父类中的方法属性需要被子类访问用public,但有不让子类重写改方法,可以用final修饰;

    该类可以让子类重写,但不能让其他类自由访问,可以用protect。


3.单列类

     class Singleton{

private static Singleton instance;

private Singleton(){}

public static Singleton getInstance(){

if(instance == null){

instance = new Singleton();

}

return instance;

}

}


4.abstract 抽象类

1.定义一个抽象类  2.继承一个抽象类,没有完全实现父类的抽象方法  3.实现一个接口,没有完全实现接口的抽象方法

2.abstract 不能与private,final同时修饰方法,因为abstract需要子类重写。

     3.没有抽象属性,没有类抽象方法(不能和static同时修饰方法)


5.接口

  public interface 接口名 extends 父接口1,父接口2...{

常量定义;(系统默认为public static final )

抽象方法定义;(系统默认为public abstract)

}

接口里面可以使常量,方法,内部类,枚举类

类实现接口必须实现接口的所以方法,否则要把类定义成抽象类。

接口,抽象类相同点:

  接口和抽象都不能被实例化,只能被其他类继承或实现

接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的子类必须实现这些抽象方法

不同点:

接口里只能包含抽象方法,抽象类则可以只包含普通方法

接口只能定义静态常量属性,不能定义普通属性;抽象类既可以定义静态常量属性,也可以定义普通属性;

接口不包含构造器,抽象类包含构造器,但不是用来实例化对象,而是用来让子类调用这些构造器来完成属于抽象类的初始化操作

接口里不能包含初始化块,但抽象类完全可以只包含初始化块

一个类最多只能有一个父类,包括抽象类。但一个类可以实现多个接口


6.枚举类型

public enum Operation

{

PLUS,MINUS,TIMES,DIVIDE;

double eval(double x, double y)

{

switch(this)

{

case PLUS:    return  x+y;

case MINUS:      return x-y;

case TIMES:     return x*y;

case DIVIDE:    return x/y;

default:   return 0;

}

}

public static void main(String[] args)

{

System.out.println(Operation.PLUS.eval(3,4));

}

}


6,集合

主要根集合collect 和 map

Collect:派生出Set(无序,不重复);List(有序,可重复);Map(无序,key不重复)

Iterator 只适用于遍历集合,不能修改元素。

public class JavaTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Collection<String> books = new HashSet<String>();
books.add("c");
books.add("java");
books.add("php");
Iterator iterator = books.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}

用foreach遍历集合

public class JavaTest {


public static void main(String[] args) {
// TODO Auto-generated method stub
Collection<String> books = new HashSet<String>();
books.add("c");
books.add("java");
books.add("php");
for (String string : books) {
System.out.println(string);
}
}
}


TreeSet 是SortSet的唯一实现,TreeSet中的元素是按从小到大排列的,因此,TreeSet中增加的元素必须是同一类对象,并且该对象实现了Comparable接口

EnumSet是专门为枚举类型实现的集合


List接口

List集合代表一个有序集合

List出来提供Iterator来遍历集合,还提供了ListIterator,ListIterator提供了向前迭代和增加元素的功能

ArrayList 和Vector作为List类的两个典型实现

Vector还提供了一个子类Stack

Arrays。ArrayList是一个固定长度的List集合,程序只能遍历里面的元素,不能增加,删除元素

List fixedlist = Arrays.asList(“aaaa”);

Map  :HashMap 和Hashtable是Map接口的典型实现

其中,作为Key的对象必须实现hasCode方法和equals方法


9.Scanner(获取键盘输入,可以单独读取int,long,string等类型)

public class JavaTest {


public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
// sc.useDelimiter("/n");
while(sc.hasNext()){
System.out.println(sc.next());
if(...){
break;
}
}
}
}

BufferReader(读取整个String,不能读取单个int等类型)





0 0
原创粉丝点击