1. Java数据类型

java有两种数据类型:  原始数据类型引用(对象)数据类型  

  • Primitive Data Types
  • Reference/Object Data Types

 

1.1   8种基本数据类型

byte

  • Byte data type is an 8-bit signed two's complement integer       (two's complement integer 二进制补码)

short

  • 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 

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

float 

  • 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 byte, short, char, 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: Character, Byte, Short, 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




java获取 数据源_java获取 数据源

java获取 数据源_c/c++_02

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修饰符

java获取 数据源_java_03

 

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

 

分支语句

break

  •  unlabeled
  •  labeled  

continue

return

 

输入输出重定向

测试某个代码的时候,如果需要从控制台输入大量数据,从键盘上输入是非成乏味的事情,而且容易出错。可以将数据保存在一个文本文件中重定向输入。

示例




java获取 数据源_java获取 数据源

java获取 数据源_c/c++_02

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