Java 數據類型與基礎知識

1. Java數據類型html

java有兩種數據類型:  原始數據類型引用(對象)數據類型  java

  • Primitive Data Types
  • Reference/Object Data Types

 

1.1   8種基本數據類型jquery

bytec++

  • Byte data type is an 8-bit signed two's complement integer       (two's complement integer 二進制補碼)

shortgit

  • Short data type is a 16-bit signed two's complement integer

int 程序員

  • Int data type is a 32-bit signed two's complement integer.

long github

  • Long data type is a 64-bit signed two's complement integer

float sql

  • Float data type is a single-precision 32-bit IEEE 754 floating point

double數據庫

  • double data type is a double-precision 64-bit IEEE 754 floating point

boolean編程

  • boolean data type represents one bit of information

char

  • char data type is a single 16-bit Unicode character
  • Minimum value is '\u0000' (or 0)
  • Maximum value is '\uffff' (or 65,535 inclusive)
  • Char data type is used to store any character
  • Example: char letterA = 'A'

 

Three-bit two's-complement integers
Bits Unsigned
value
Two's
complement
value
011 3  3 
010 2  2 
001 1  1 
000 0  0 
111 7  -1 
110 6  -2 
101 5  -3 
100 4  -4 

1.2 類型轉換

  •  老是能夠將一個數值賦給支持更大數值範圍類型的變量。
    • 例如 int --> float,  long --> float都是能夠的, (注意,能夠將long型的值賦給float型變量)
    • 類型轉換不改變被轉換的變量  double d = 4.5; int i = (int)d; //i becomes 4, but d is not changed, still 4.5
    • 將一個int型變量賦值給short型或byte型變量,必須顯示使用類型轉換  int i = 1; byte b = i;   // Error because explicit casting is required
    • 只要整型直接量實在目標變量容許的範圍內,那麼將整型直接量賦給short型或者byte型變量時,就不須要顯示的類型轉換   byte a = 1;  byte b =  'c';  // ok
    • boolean只有true和false,較特殊的非數值型,不能進行強制轉換
    • char類型和int類型在容許範圍內能夠互相轉換
  • 類型轉換的語法要求目標類型放在括號內,緊跟其後的是要轉換的變量名或值。  eg: int a = (int) b;     (b: long)

 

 

  switch 支持的類型: (java 7)

    A switch works with the byteshortchar, and int primitive data types. It also works with enumerated types (discussed in Enum Types), the String class, and a few special classes that wrap certain primitive types: CharacterByteShort, andInteger (discussed in Numbers and Strings).

 

1.3 包裝類(Wrapper class) 

 Byte, Short, Integer, Long, Float, Double, Boolean, Character.

 開箱

 

對應數據庫

 

SQL JDBC/Java setXXX getXXX
VARCHAR java.lang.String setString getString
CHAR java.lang.String setString getString
LONGVARCHAR java.lang.String setString getString
BIT boolean setBoolean getBoolean
NUMERIC java.math.BigDecimal setBigDecimal getBigDecimal
TINYINT byte setByte getByte
SMALLINT short setShort getShort
INTEGER int setInt getInt
BIGINT long setLong getLong
REAL float setFloat getFloat
FLOAT float setFloat getFloat
DOUBLE double setDouble getDouble
VARBINARY byte[ ] setBytes getBytes
BINARY byte[ ] setBytes getBytes
DATE java.sql.Date setDate getDate
TIME java.sql.Time setTime getTime
TIMESTAMP java.sql.Timestamp setTimestamp getTimestamp
CLOB java.sql.Clob setClob getClob
BLOB java.sql.Blob setBlob getBlob
ARRAY java.sql.Array setARRAY getARRAY
REF java.sql.Ref SetRef getRef
STRUCT java.sql.Struct SetStruct getStruct

 

  • 注意在java中,(任何方法中的)局部變量必須初始化後才使用(區別於聲明變量),不然編譯沒法經過。

 

2. 基礎知識之零散集合

java.lang.Object

API  官方doc

    Object()
    默認構造方法
    clone() 
    建立並返回此對象的一個副本。 
    equals(Object obj) 
    指示某個其餘對象是否與此對象「相等」。 
    finalize() 
    當垃圾回收器肯定不存在對該對象的更多引用時,由對象的垃圾回收器調用此方法。 
    getClass() 
    返回一個對象的運行時類。 
    hashCode() 
    返回該對象的哈希碼值。 
    notify() 
    喚醒在此對象監視器上等待的單個線程。 
    notifyAll() 
    喚醒在此對象監視器上等待的全部線程。 
    toString() 
    返回該對象的字符串表示。 
    wait() 
    致使當前的線程等待,直到其餘線程調用此對象的 notify() 方法或 notifyAll() 方法。 
    wait(long timeout) 
    致使當前的線程等待,直到其餘線程調用此對象的 notify() 方法或 notifyAll() 方法,或者超過指定的時間量。 
    wait(long timeout, int nanos) 
    致使當前的線程等待,直到其餘線程調用此對象的 notify() 方法或 notifyAll() 方法,或者其餘某個線程中斷當前線程,或者已超過某個實際時間量。
View 展開

 

面嚮對象語言與過程式語言的比較 (Procedural Languages and Object-oriented Languages)

  過程式編程是傳統的編程方式,它遵循了與計算機硬件相符合的方式來執行程序(獲取指令,解碼,執行)。

  若是把數據項看做一個對象,那麼一個程序能夠看做一系列在此對象上的操做。 [假設]

  • 在過程式編程中,這些對象和操做是獨立而分離的。對象能夠存儲在計算機中,不一樣的程序在它們上面使用不一樣的操做。這些對象是被動的(passive),程序員定義好操做並應用到這些對象上。
  • 在面向對象編程中,對象和操做聯繫在一塊兒,程序員同時定義好對象和在該對象上的操做。程序員或其餘程序員可使用這個結合並調用其中的一些操做來解決某個問題,所以這些對象是活躍的(actived)。

 

 類的設計原則

  • 內聚性
  • 一致性
  • 封裝性
  • 清晰性
  • 完整性
  • 實例和靜態

  若是方法不依賴於某個具體的實例,那就應該將它聲明爲靜態方法。

 

Java修飾符

 

goto, const是c++中的保留字,目前在Java中不能使用。注意true,false,null是字面常量,不是關鍵字。

 

分支語句

break

  •  unlabeled
  •  labeled  

continue

return

 

輸入輸出重定向

測試某個代碼的時候,若是須要從控制檯輸入大量數據,從鍵盤上輸入是非成乏味的事情,並且容易出錯。能夠將數據保存在一個文本文件中重定向輸入。

示例

 1 import java.util.Scanner;
 2 
 3 public class Hello {
 4     public static void main(String[] args){
 5         Scanner sc = new Scanner(System.in);
 6         String data = sc.nextLine();
 7         System.out.println(data);
 8     }
 9 
10 }
View Code

運行 (這裏會將數據輸出到output.txt文件而不是控制檯)

java Hello < input.txt > output.txt

  

程序設計風格

1. 適當的註釋和註釋風格

  使用javadoc註釋(/**...*/)來註釋整個類或整個方法。爲了將這些註釋提取出來放在一個javadoc的HTML文件中,這些註釋必須放在類或方法頭的前面,要註釋方法中的某一步驟,建議使用行註釋(//)。

2. 命名習慣

3. 適當的縮進和空白

4. 塊的風格 (recommend end-of-line)

 

編程哲學KISS (Keep it simple, stupid) ,寫優雅的代碼,簡單而有效。  elegant, simple and effective.

  • Google Java Code Style

    https://google.github.io/styleguide/javaguide.html

 

Effective Java 

UML

 

參考:

https://www.tutorialspoint.com/java/java_basic_datatypes.htm

http://www.tutorialspoint.com/jdbc/jdbc-data-types.htm

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html

相關文章
相關標籤/搜索