天天看點

java山科新手學習

1.list可以進行排序(運用Comparator)

對應題:7-33 學生清單2

class studentComparator implements Comparator<Student>{

			@Override
			public int compare(Student o1, Student o2) {
				// TODO Auto-generated method stub
               return o1.getNo()-o2.getNo();
            }
			
		}
		list.sort(new studentComparator());
		for (Student s : list) {
            System.out.println(s);
		}
           

2.Map的正确周遊方法

對應題:7-32 找到出勤最多的人-hebust

Iterator<Map.Entry<String,Integer>> it=map.entrySet().iterator();
	    while(it.hasNext()) {
	    	Map.Entry<String,Integer> entry=it.next();
	    	if(entry.getValue()==max) {
	    		System.out.println(entry.getKey());
	    	}
	    }
           

3.正确的set插入方式(以某個字元串結束)

while(true)
		{
			String str=sc.next();
			if(str.equals("!!!!!")) {
				break;
			}else {
				set.add(str);
			}
		}
           

4.java中大寫轉小寫函數:toLowerCase();

反之,toUpperCase();

5.list.contains()用到equals方法,一般情況下我們沒有重寫equals()方法,這時就會調用繼承自object類的equals()方法,而我們都知道object的equals()方法,實際就是 ==!!還有就是list.indexOf(o),也是調用每個元素的equals方法與o比較,是以一般要重寫。

6.

java山科新手學習

7.這個題做的不錯奧:

讀入一個字元串,該字元串表示一個整型二維數組d,數組中的元素通過解析字元串參數獲得。例如,字元串參數:“1,2;3,4,5;6,7,8”,對應的數組為: d[0,0] = 1 d[0,1] = 2,d[1,0] = 3 d[1,1] = 4 d[1,2] = 5 d[2,0] = 6 d[2,1] = 7 d[2,2] = 8 列印這個數組各元素的内容

import java.util.*;
import java.util.Scanner;
public class Main{
	//1,2;3,4,5;6,7,8
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String s=sc.nextLine();
		String [] str=s.split(";");
		for(int i=0;i<str.length;i++) {
			String[] st=str[i].split(",");
			for(int j=0;j<st.length;j++) {
				if(j==0) {
					System.out.print("d["+i+","+j+"] = "+st[j]);
				}else {
					System.out.print(" d["+i+","+j+"] = "+st[j]);
				}
			}
			System.out.println();
		}
	}
}
           

8.矩陣總結:

(1)矩陣加法:兩個行列值相同的矩陣可以相加

public Matrix add(Matrix b) {//矩陣相加
		Matrix matrix=new Matrix(this.a.length,this.a[0].length);
		for (int i=0;i<this.a.length;i++) {
			for (int j=0;j<this.a[0].length;j++) {
				matrix.set(i,j,this.a[i][j]+b.a[i][j]);
			}
		}
		return matrix;
		
	}
           

(2)矩陣相乘:A矩陣的行數必須等于B矩陣的列數,得到的矩陣行數等于A的行數,列數等于B的列數

public Matrix multiply(Matrix b) {//矩陣相乘
		if(this.a[0].length != b.a.length)
    		return null;
		Matrix matrix=new Matrix(this.a.length,b.a[0].length);
		double sum=0;
		for (int i=0;i<this.a.length;i++) {
			for (int j=0;j<b.a[0].length;j++) {
				sum=0;
				for (int k=0;k<b.a.length;k++) {
					sum+=this.a[i][k]*b.a[k][j];
				}
				matrix.set(i,j,sum);
			}
		}
		return matrix;
	}
           

9.Collection c=new Arraylist();

c問什麼定義為collection類型:

(1)面向接口的程式設計

(2)通過c隻能調用屬于Collection接口的方法,如果以後需求變更,ArrayList不能滿足要求,比如換為HashSet,隻需要換new HashSet(),後面的代碼都不用變動,因為下面的代碼都是面向Collection接口的編碼。

10.java的運作環境jre包含jvm,jvm解釋執行.class檔案。

JVM :英文名稱(Java Virtual Machine),就是我們耳熟能詳的 Java 虛拟機。它隻認識 xxx.class 這種類型的檔案,它能夠将 class 檔案中的位元組碼指令進行識别并調用作業系統向上的 API 完成動作。是以說,jvm 是 Java 能夠跨平台的核心,具體的下文會詳細說明。

JRE :英文名稱(Java Runtime Environment),我們叫它:Java 運作時環境。它主要包含兩個部分,jvm 的标準實作和 Java 的一些基本類庫。它相對于 jvm 來說,多出來的是一部分的 Java 類庫。

JDK :英文名稱(Java Development Kit),Java 開發工具包。jdk 是整個 Java 開發的核心,它內建了 jre 和一些好用的小工具。例如:javac.exe,java.exe,jar.exe 等。

path變量用于計算機查找java和javac這兩個指令

classpath變量用于查找.class檔案

11.判斷字元串是否相等就要用equals,而不是“==”!!!!!記住nmd

str.equalsIgnoreCase(“student”):

這就是不考慮大小寫的情況下與student相等的字元串的表達方式。

12.Person person=new Student();

person的編譯類型就是Person,而實際類型是Student

import java.util.*;
public class Main{
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
			Person person=new Student();
			if(person instanceof Student) {
				System.out.println("ok");
			}
	}
}
class Person{
	private String name;
}
class Student extends Person{
	private int num;
}
           

這裡也說明了person的類型是Student

12.str=str.substring(0,str.length()-1);這裡可以将str的最後一個字元除去。

13. jmu-Java&Python-統計文字中的單詞數量并按出現次數排序

現在需要統計若幹段文字(英文)中的單詞數量,并且還需統計每個單詞出現的次數。

注1:單詞之間以空格(1個或多個空格)為間隔。

注2:忽略空行或者空格行。

import java.util.*;
import java.util.Scanner;

public class Main {
	// 1,2;3,4,5;6,7,8
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		Map map = new HashMap();
		while (true) {
			// !.,:*?
			String str = sc.next();
			if (str.equals("!!!!!")) {
				break;
			} else {
				Set set = map.keySet();
				if (str.contains("!") || str.contains(".") || str.contains(",") || str.contains(":")
						|| str.contains("*") || str.contains("?")) {
					str = str.toLowerCase();
					str = str.substring(0, str.length() - 1);
					char c = str.charAt(str.length() - 1);
					if (c > 'z' || c < 'a') {
						str = str.substring(0, str.length() - 1);
					}
				}
				String str1 = str.toLowerCase();
				if (set.contains(str1)) {
					int value1 = (int) map.get(str1);
					int value = value1 + 1;
					map.put(str1, value);
				} else {
					map.put(str1, 1);
				}
			}
		}
		System.out.println(map.size());
		List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>();
		list.addAll(map.entrySet());
		class mapcomparator implements Comparator<Map.Entry<String, Integer>> {
			public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
				if (o1.getValue() != o2.getValue()) {
					return o2.getValue() - o1.getValue();
				} else {
					return o1.getKey().compareTo(o2.getKey());
				}

			}
		}
		list.sort(new mapcomparator());
		Iterator iter = list.iterator();
		int num = 0;
		for (Map.Entry s : list) {
			if (num == 10) {
				break;
			} else {
				System.out.println(s.getKey() + "=" + s.getValue());
				num++;
			}
		}

	}
}
           

14.一些可能會經常用到的東西

(1)Arrays類:

Arrays.toString(a),将數組a轉換為一個字元串。

Arrays.fill(a,val),将數組a的所有的值都指派為val

Arrays.fill(a,x,y,val),将數組a的x到y的值都指派為val

Arrays.asList(Array):數組轉換為list

*set與list互相轉換:

Set set=new HashSet();

List list=new ArrayList(set);

Set setk=new HashSet(list);

所有的容器都可以轉換為數組 運用toArray()

(2)Collection c接口:

c.clear():清除集合中的所有元素。

c.contains(o):傳回集合中是否包含指定元素

c.contains(Collection d):傳回集合中是否包含集合c

c.retainAll(Collection d):求集合c與d的交集

Collection c=new ArrayList();
	    Collection d=new ArrayList();
	    c.add(1);
	    c.add(2);
	    c.add(3);
	    d.add(2);
	    d.add(3);
	    d.add(4);
	    c.retainAll(d);
	    System.out.println(c);
           

(3)TreeSet隻接受實作了Comparable的類的對象,而且有定制排序

static class Studentcomparator implements Comparator<Student> {
/*
 * Java出現No enclosing instance of type E is accessible. Must qualify the allocation with an enclosing
 * 即“沒有可通路的内部類E的執行個體,必須配置設定一個合适的内部類E的執行個體(如x.new A(),x必須是E的執行個體。)”
 * 看看是不是主類調用了非靜态類
 */
		@Override
		public int compare(Student o1, Student o2) {
			// TODO Auto-generated method stub
			return o1.getAge()-o2.getAge();
		}
		
	}
TreeSet<Student> tree=new TreeSet<Student>(new Studentcomparator());
           

(4)list l:

l.get(index),傳回index處的值

l.insexOf(Object o):傳回list中o第一次出現的位置

(5)queue的主要方法:

java山科新手學習

15.

Java辨別符命名規則:

① 隻能由字母、數字、_或美元符号組成 字母:不局限于

② 必須以字母、_或$開頭 英文字母,可以

③ 大小寫敏感的,無長度限制 包含Unicode字

符集支援的字元

④ 不能是Java的關鍵字和保留字

16.

float比long的表數範圍大

多種類型混合運算:1)系統自動将所有類型轉換成表數範圍最

大的類型,再進行計算;2)byte、short、char互相之間不轉換,

用時全部自動轉換成int

例1:int i1 = 123; int i2 = 456;double d1 = (i1+i2)*1.2; 系統将轉換為double型運算

例2:byte b1 = 1;

byte b2 = 2;

byte b3 = b1+b2;

系統将轉換為int型運算,需要強制轉換符, 改為(byte) (b1+b2);

17.

//建立一個日期對象
                Date d=new Date();
                System.out.println(d);
                SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
                //格式化為日期/時間字元串
                String cc=sdf.format(d);
                System.out.println(cc);
           

18.①隻要一個類的構造方法設定為private,就表明它不想被繼承,因為要被繼承子類就要實作父類的構造方法

②final類:阻止類(final類)被繼承

final方法:阻止方法(final方法)被重寫(override)

19.格式為“引用 instanceof 類名”:判斷該引用所指向的對象是否屬于該類或該類子類的對象。

20.數組複制

int[ ] arrayA = {2,3,5,7,11,13};

int[ ] arrayB = new int[10];

System.arraycopy(arrayA,0,arrayB,0,arrayA.length);

21.toUpperCase()和toLowerCase()方法會傳回一個新的String對象,但是如果字元串原本就是大寫或小寫形式則傳回原對象。

String s = "Welcome to Java World!";
		String s1 = " sun java ";
		//substring()傳回一個新字元串,它是此字元串的一個子字元串。
		//該子字元串始于指定索引處的字元,一直到此字元串末尾。
		System.out.println(s.substring(11));
		//trim()的作用是去掉字元串兩端的多餘的空格
		System.out.println(s1.trim());
		//indexOf()
		System.out.println(s.indexOf("Java"));
		//replace()替換
		System.out.println(s.replace("Java","java"));
		//String.valueOf()将指定的資料類型轉換成String
		//String.valueOf(Object obj):将 obj對象轉換成 字元串,等于 obj.toString() 
		int i=123;
		String stringi=String.valueOf(i);
		System.out.println(stringi.length());//3
		Student stu=new Student();
		String stringstu=String.valueOf(stu);//調用toString()
		System.out.println(stringstu);
           

22.StringBuffer 線程安全的可變字元序列

傳回值:對原來StringBuffer對象的引用。

public StringBuffer append(…)

public StringBuffer insert(…)

public StringBuffer delete(…)

23.Math

abs:求絕對值

pow(x,y):求x的y次幂

Math.random()是令系統随機選取大于等于 0.0 且小于 1.0 的僞随機 double 值

更新:Math.random()*(n-m)+m,生成大于等于m小于n的随機數;

24.Collections類的常用方法:

sort(list,new Compatator());

replaceAll(list,a,b);替換

swap(list,a,b);

binarySearch(list,key);

shuffle(list);随機排序

reverse();翻轉

rotate(list,a);後移a個機關,後面被覆寫的數移到前面去

25.周遊的三種方式:注意“增強for循環方式”

public static void test3(){
        ArrayList list = new ArrayList();
        list.add(123);
        list.add("AAAA");
        list.add("bb");
        list.add(new String("JavaEE"));
        list.add(new Date());
        list.add(false);
        // 周遊
        //1.Iterator疊代器方式
        Iterator iterator = list.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }

        //2.增強for循環
        for(Object obj:list){
            System.out.println(obj);
        }
        //3.普通for循環
        for(int i=0;i<list.size();i++){
            System.out.println(list.get(i));
        }
    }
}