熟悉C++的人對於兩個字串比較的代碼一定很瞭解: (string1==string2) 但在java中,這個代碼即使在兩個字串完全相同的情況下也會返回false Java中必須使用string1.equals(string2)來進行判斷 補充 如果: string s1=new String("Hello"); string s2=new String("Hello"); 則(s1==s2)=false 如果: string s1="Hello"; string s2="Hello";
使用內部類讓Java實現“多繼承”眾所周知,Java沒有像c++那樣支援多繼承,但是我們可以使用介面或內部類來類比實現多繼承。我們使用內部類來實現一個繼承自消費者,又繼承自生產者的衍生類別。實際上Java之所以設計出內部類這個概念,一方面是為了更好的封裝性,另一方面就是藉助內部類類比實現多繼承。首先我們定義一個消費者抽象基類/** * Consumer Class *@author androidyue *Last Modified:2011-12-13 上午11:04:56
import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import java.util.Vector;public class Test {private static int m_iNum = 0;private int mCount;public Test() {mCount = 0;m_iNum = 0;}public Test(int num) {mCount = 1;m_iNum = num;}
linux平台下Netbean亂碼或者是一些java工具(如jconsole,jvisualvm),解決方案是給字型做連結,但是linux各個發行版以及同一個發行版的目錄結構會有些細微的差別,這裡的是Redhat 6系列的(Scientificlinux),redhat 6中的simsun.ttc字型在/usr/share/fonts/simsun/simsun.ttc。只需在對這個檔案做一個軟串連到jre的fonts目錄或者是fonts下的fallback目錄中。具體如下做:ln -s /us
文章來自於此,經過各種查詢資料,糾結了好久的AVL樹實現總算搞定了,以下是一個動態示範的動畫avl,來源不記得了。看代碼之前務必把演算法描述看懂了,還有幾種旋轉方法(很重要,插入和刪除的平衡都靠這幾步),具體的可以看下嚴蔚敏的《資料結構與演算法》,C語言描述,裡面除了刪除沒有講,其餘的講的挺細的。這裡給的參考是wiki的。建議看該結構的時候掌握對BST的基本操作(插入刪除)。這樣理解起來就不會怎麼吃力package com.mars.datastructure;/** *
堆排序是幾種排序中比較難理解的一點,開始學資料結構的時候有些渾渾噩噩,原理沒搞清楚了就看代碼,越搞越糊塗,也越困,加之那時候大學,沒意識到良好的演算法基礎意味著什麼,所以直到快畢業基礎資料結構和演算法都是一塌糊塗,找工作時候才耐下性子看了下,如今工作一年了,面對著慘淡的工作環境和薪資,讓我有種學習的動力,如果你跟我一樣苦逼,那就抽時間好好打打基礎吧。我是比較追求簡潔明了的那種,所以給出的代碼基本上是比較好理解的,因為難理解的我理解不了,也就沒辦法對照代碼看懂驗證或者是寫出來。理解堆排序一定要記得
1、ArrayList概述: ArrayList是List介面的可變數組的實現。實現了所有可選列表操作,可以包含包括null任何元素。除了實現List介面外,此類還提供一些方法來操作內部用來儲存列表的數組的大小。(此類大致上等同於Vector 類,除了此類是不同步的。) 每個ArrayList都有一個容量,該容量是用來儲存列表元素的數組大小。它總是至少等於列表的大小。隨著向ArrayList中增加元素,ArrayList的容量也隨之增加。添加大量元素
8.3介面介面的結構與抽象類別非常相似.不同點:介面的資料成員必須初始化;介面中的方法必須全部都聲明為abstract 的,也就是說,介面不能像抽象類別一樣擁有一般的方法,而必須全部是抽象方法.1).介面的定義介面的文法格式如下:[ public ] interface 介面名稱 [ extends 父介面名列表 ]{ [ public ][ static ][ final ] 資料類型 成員變數名 = 常量; ... ... [ public ][ abstract ]
要求:定義一個介面,介面中有四個抽象方法。介面類函數:public interface jiekou {public double area();public double len();public void area1();public void len1();}Circle類,實現介面:public class Circle implements jiekou {double r;double esp =3.1415926;Circle(double
Java中的加密和DSA數位簽章 Bromon 一、單向加密(MD5和SHA-1) 單向加密通常用於訊息摘要,具體演算法可以閱讀java.security.*的原始碼獲得。經過封裝之後可以使用簡單的靜態方法來實現,Look: package org.bromon; public class MD5Encoder { public static void main(String args[]) { String info=args[0]; try { //選擇MD5密碼編譯演算法 j
ExecutorService:真正的線程池介面。ScheduledExecutorService能和Timer/TimerTask類似,解決那些需要任務重複執行的問題。ThreadPoolExecutorExecutorService的預設實現。ScheduledThreadPoolExecutor繼承ThreadPoolExecutor的ScheduledExecutorService介面實現,週期性任務調度的類實現。ThreadPoolExecutor
foreach語句使用總結 foreach語句是java5的新特徵之一,在遍曆數組、集合方面,foreach為開發人員提供了極大的方便。foreach語句是for語句的特殊簡化版本,但是foreach語句並不能完全取代for語句,然而,任何的foreach語句都可以改寫為for語句版本。foreach並不是一個關鍵字,習慣上將這種特殊的for語句格式稱之為“foreach”語句。從英文字面意思理解foreach也就是“for
Vector、ArrayList和List的異同[zz]線性表,鏈表,雜湊表是常用的資料結構,在進行Java開發時,JDK已經為我們提供了一系列相應的類來實現基本的資料結構。這些類均在java.util包中。本文試圖通過簡單的描述,向讀者闡述各個類的作用以及如何正確使用這些類。 Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap└WeakHashMapCollection介面 Colle
java中foreach的使用 Java5之後新增了foreach文法,可以看成for迴圈的一個擴充,其主要用處在於使得遍曆數組或者其他集合(collections)更為方便。這個新文法命名為enhanced
Posted on 2009-05-04 21:40 Kid.Loki 閱讀(2814) 評論(3) 編輯 收藏 環境準備1 機器上有Eclipse 3.1和Matlab 2007a2 機器的環境變數設定 (1)JAVA_HOME (JDK的安裝位置,如C:/Program Files/Java/jdk1.5.0) 設定後,重啟matlab才能有效。 用getenv JAVA_HOME在Matlab的命令視窗中實驗,看看得到的傳回值正確方可說明其對Matlab生效了。
插入排序的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃描,找到相應位置並插入。其具體步驟參見代碼及注釋。/** * 插入排序<br/> * <ul> * <li>從第一個元素開始,該元素可以認為已經被排序</li> * <li>取出下一個元素,在已經排序的元素序列中從後向前掃描</li> * <li>如果該元素(已排序)大於新元素,將該元素移到下一位置</li> * <
volatile 變數使用指南層級: 中級Brian Goetz (brian.goetz@sun.com), 進階工程師, Sun Microsystems2007 年 7 月 05 日Java 語言套件含兩種內在的同步機制:同步塊(或方法)和 volatile 變數。這兩種機制的提出都是為了實現代碼線程的安全性。其中 Volatile 變數的同步性較差(但有時它更簡單並且開銷更低),而且其使用也更容易出錯。在這期的 Java 理論與實踐 中,Brian Goetz 將介紹幾種正確使用
AmaterasUML:http://amateras.sourceforge.jp/cgi-bin/fswiki_en/wiki.cgi?page=AmaterasUMLhttp://marketplace.eclipse.org/content/AmaterasUML 支援:類圖、時序圖、使用案例圖支援從Java原始碼產生UML類圖,或者由UML類圖產生Java原始碼 用的時候注意,需要把相關檔案(*.cld)建立在原始碼所在的工程中,這樣才可以從原始碼產生UML。步驟是直接在畫圖區點右鍵,
1. JUnit的TestCase的setUp()和tearDown()是每個testXXX方面啟動並執行時候都要執行的!這個我第一次聽說,我以前一直以為是整個TestCase執行之前和之後執行的。但我們很多時候還是希望整個TestCase有個初始化和反初始化,這方面可參見:http://www.blogjava.net/iamtin/archive/2006/11/17/81802.html2.
Java Error能不能捕獲這個問題,之前從別人的部落格看到過,然後自己也實驗過,其實Error和Exception一樣是可以捕獲的。但是前些時候,又開始和同事討論了起來,相比之前別人的文章,只是驗證可以捕獲,想加入點不同的東西。所以寫下這篇文章。首先下面的代碼就是出現異常並捕獲的代碼。private static void testCatchError() {try {throw new Error("An error occurs here");} catch (Exception e)