国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java核心技術(shù)筆記 語(yǔ)言基礎(chǔ)

lindroid / 1091人閱讀

摘要:變量聲明變量變量名規(guī)則字母開(kāi)頭,由字母或數(shù)字構(gòu)成的序列,中的字母包括或者某種語(yǔ)言中代表字母的任何字符,數(shù)字包括或者某種語(yǔ)言中代表數(shù)字的任何字符。刪除原始字符串頭部和尾部空格。中斷控制流程,使用在和循環(huán)中,用于提前中斷循環(huán)。

《Java核心技術(shù) 卷Ⅰ》 第3章 Java 的基本程序設(shè)計(jì)結(jié)構(gòu)

一些規(guī)則

類命名:CamelCase 駝峰命名法,以及必須是字母開(kāi)頭,后面跟字母和數(shù)字的任意組合;

源代碼文件名:必須與公共類的名字相同(包括大小寫(xiě));

Java中的函數(shù):都是屬于某個(gè)類的方法(而不是稱為成員函數(shù));

Java通用語(yǔ)法:object.method(parameters)

Java使用雙引號(hào)分隔字符串;

println輸出后會(huì)換行,而print輸出后不換行;

注釋方法:

單行:code; //comment

多行:/* comment */,不可嵌套使用;

文檔:使用方式如下

/**
 * This is a document comment
 * @from Core Java Chapter 3
 */

數(shù)據(jù)類型

8種基本類型(primitive type):

4種整形:byte,short,int,long

2種浮點(diǎn)型:float,double

Unicode編碼字符單元:char

真值:boolean

Java沒(méi)有無(wú)符號(hào)類型。

如果需要數(shù)值計(jì)算不含任何誤差,應(yīng)使用BigDecimalBigInteger類;

NaN不能用 == 來(lái)判斷。

變量

聲明變量:type name;

變量名規(guī)則:字母開(kāi)頭,由字母或數(shù)字構(gòu)成的序列,Java中的字母包括"A"~"Z"、"a"~"z"、"_"、"$"或者某種語(yǔ)言中代表字母的任何Unicode字符,數(shù)字包括"0"~"9"或者某種語(yǔ)言中代表數(shù)字的任何Unicode字符。

變量名大小寫(xiě)敏感,長(zhǎng)度沒(méi)有限制;

可以在一行聲明多個(gè)變量,但不提倡;

變量聲明盡可能靠近變量第一次使用的地方;

final關(guān)鍵字指示常量,表示只能被賦值一次,常量常用全大寫(xiě);

static final關(guān)鍵字指示類常量,一個(gè)類中的多個(gè)方法使用,const雖然是保留字,但是目前并沒(méi)有使用;

運(yùn)算符

基礎(chǔ)運(yùn)算符:+-*/%;

整數(shù)被0除會(huì)產(chǎn)生異常,浮點(diǎn)數(shù)被0除會(huì)得到無(wú)窮大或NaN結(jié)果;

自增自減:++--,注意在其他表達(dá)式中前綴和后綴的區(qū)別,簡(jiǎn)易多帶帶使用,以免產(chǎn)生困惑和問(wèn)題;

關(guān)系(比較)運(yùn)算符以及邏輯運(yùn)算符:沒(méi)有什么特殊的,略;

三元操作符: condition ? exp1(true) : exp2(false);

位運(yùn)算符:處理整數(shù),與(&)、或(|)、非(~)、異或(^)、左移(<<)、右移(>>),在位模式下工作, >>>邏輯右移用0填充高位,>>>算數(shù)右移用符號(hào)位填充高位。其中需要注意的是,移位操作右邊的操作數(shù),也就是移位位數(shù)值在運(yùn)算前需要進(jìn)行模數(shù)據(jù)位數(shù)的計(jì)算,int類型 1 << 351 << 3 的結(jié)果相同;

數(shù)學(xué)函數(shù):Math.method(x).

數(shù)值類型的轉(zhuǎn)換

合法轉(zhuǎn)換基本原則:從低字節(jié)類型向高字節(jié)類型轉(zhuǎn)換;

特殊情況:int(4字節(jié))、long(8字節(jié))轉(zhuǎn)float(8字節(jié))仍有可能有精度損失,long(8字節(jié))轉(zhuǎn)double(16字節(jié))也可能有精度損失,但int轉(zhuǎn)double沒(méi)有精度損失;

以上是自動(dòng)完成的類型轉(zhuǎn)換;

強(qiáng)制類型轉(zhuǎn)換(cast):(type) var,注意轉(zhuǎn)換如果超出范圍則會(huì)截?cái)喈a(chǎn)生另一個(gè)合法的值;

舍入運(yùn)算:Math.ground(x),注意返回的是long;

運(yùn)算符優(yōu)先級(jí)

暫時(shí)只記錄一些常用的,以下優(yōu)先級(jí)遞減。

除特殊說(shuō)明,結(jié)合性(即在遇到相同優(yōu)先級(jí)運(yùn)算符時(shí)計(jì)算的順序)默認(rèn)從左向右。

方法調(diào)用

一元運(yùn)算符:!,~(位非),++,--,+(正),-(負(fù)),強(qiáng)轉(zhuǎn),new,從右到左

乘、除、求余數(shù)

加、減

移位

大于(等于)、小于(等于)

相等、不等

位與

位異或

位或

邏輯與

邏輯或

三元運(yùn)算符,從右到左

帶有賦值(=)操作的操作符,比如+=,-=,...,從右到左

當(dāng)自己寫(xiě)代碼時(shí)拿不準(zhǔn)優(yōu)先級(jí)的時(shí)候,省事點(diǎn)加括號(hào)就完事了。

枚舉類型
enum Size { SMALL, MEDIUM, LARGE, EXTRA_LARGE };
Size s = Size.MEDIUM; //賦值為null則表示沒(méi)有設(shè)置任何值
字符串

Java沒(méi)有內(nèi)置的字符串類型,而是在標(biāo)準(zhǔn)Java類庫(kù)中提供了一個(gè)預(yù)定義類String,每個(gè)用雙引號(hào)括起來(lái)的字符串都是String類的一個(gè)實(shí)例。

String emptyString = "";
String greeting = "Hello";
子串
String s = greeting.substring(0, 3);

substring方法的兩個(gè)參數(shù)是:

想要復(fù)制的第一個(gè)位置(從0開(kāi)始)

不想復(fù)制的第一個(gè)位置(從0開(kāi)始)

兩個(gè)參數(shù)相減就是子串的長(zhǎng)度。

拼接
String name = "FirstName" + "LastName";
String age = 24 + "years old";
String person = String.join(",", name, age[, ...]);
// person is "FirstName LastName,24 years old[, ...]"

一個(gè)字符串與一個(gè)非字符串拼接時(shí),后者轉(zhuǎn)換成字符串(任何一個(gè)Java對(duì)象都可以轉(zhuǎn)換成字符串,可能指的是Class.toString())。

不可變字符串

String類沒(méi)有提供修改字符的方法,編譯器可以讓字符串共享以提高效率。

字符串相等
"Hello".equals(greeting) //區(qū)分大小寫(xiě)
"Hello".equalsIgnoreCase("hello") //不區(qū)分大小寫(xiě)

一定不要使用==來(lái)解決這個(gè)問(wèn)題,它只能確定字符串是否在同一位置,而不是他們具有相同的字符內(nèi)容

如果虛擬機(jī)始終將相同字符串共享,那就可以使用==,但實(shí)際上只有字符串常量是共享的,+substring等操作產(chǎn)生的結(jié)果并不是共享的。

空串與Null串

""是長(zhǎng)度為0的字符串,如果要檢查字符串是否為空串:

str.length() == 0
str.equals("")

Null串指的是String變量存放null,表示目前沒(méi)有任何對(duì)象與該變量關(guān)聯(lián):

str == null

檢查字符串既不是null串也不是空串:

str != null && str.length() != 0
String API

只列出一般常用到的

int compareTo(String other):按照字典順序,字符串在other之前就返回負(fù)數(shù),位于other之后則為正數(shù),相等返回0。

new String(int[] codePoints, int offset, int count:僅了解,用數(shù)組中從offset開(kāi)始的count個(gè)碼點(diǎn)構(gòu)造字符串。

boolean equals(Object other)

boolean equalsIgnoreCase(String other)

boolean startsWith(String prefix):如果以prefix為開(kāi)頭,返回true。

boolean endsWith(String suffix):如果以suffix為結(jié)尾,返回true。

int indexOf(String str):返回與字符串str匹配的第一個(gè)子串的開(kāi)始位置,如果不存在則返回-1。

int length()

String replace(CharSequence oldString, CharSequence newString):用newString代替原始字符串中所有oldString,可用String或StringBuilder作為參數(shù)。

String substring(int beginlndex, int endlndex)

String toLowerCase()

String toUpperCase()

String trim():刪除原始字符串頭部和尾部空格。

String join(CharSequence delimiter, CharSequence... elements)

CharSequence類型的參數(shù),這是一種接口類型,所有字符串都屬于這個(gè)接口。

構(gòu)建字符串

當(dāng)需要用許多較短字符串構(gòu)成字符串時(shí),使用String的拼接方式效率會(huì)比較低,每次連接都會(huì)產(chǎn)生一個(gè)新的String對(duì)象,耗時(shí)也浪費(fèi)空間,使用StringBuilder類可以避免這個(gè)問(wèn)題。

StringBuilder builder = new StringBuilder();
builder.append(ch);
builder.append(str);
String string = builder.toString();

StringBuilder類的前身是StringBuffer,效率稍低但是允許多線程方式添加或刪除字符,如果只是在單線程中編輯,則應(yīng)該用StringBuilder替代它,兩個(gè)類的API相同。

int length()

StringBuilder appencl(String str or char c)

void setCharAt(int i, char c):將第i個(gè)代碼單元設(shè)置為c。

StringBuilder insert(int offset,String str or char c):在offset位置插入一個(gè)串或單元并返回this。

StringBuilder delete(lnt startindex,int endlndex):刪除偏移量從startIndex到endIndex-1的代碼單元并返回this。

String toString():返回內(nèi)容相同的字符串。

輸入輸出 讀取輸入

首先在程序的最開(kāi)始添上:

import java.util.*

Scanner類定義在java.util包中,當(dāng)使用的類不是定義在基本java.lang包中時(shí),一定要import指示將相應(yīng)包加載。

Scanner in = new Scanner(System.in);
System.out.print("Qusetion:");
String answer = in.nextLine();

nextLine方法獲取的是一個(gè)輸入行,只想讀取一個(gè)單詞(以空白符作為分隔符),機(jī)會(huì)調(diào)用:

String answer = in.next();

讀取一個(gè)數(shù):

int number = in.nextInt();
double weight = in.nextDouble();

boolean hasNext():檢查輸入中是否還有其他單詞。

boolean hasNextInt()

boolean hasNextDouble()

如果想讀取一個(gè)輸入不可見(jiàn)的密碼,使用Console類:

Console cons = System.console();
String username = cons.readLine("User name:");
char[] password = cons.readPassword("Password:");

安全起見(jiàn),在完成密碼處理不再使用password后,應(yīng)使用填充值覆蓋數(shù)組元素。

格式化輸出
double x = 10000.0/3.0;
System.out.print(x);
// 3333.3333333333335
System.out.printf("%8.2f", x);
// 8個(gè)字符寬度和小數(shù)點(diǎn)后兩個(gè)字符的精度打印x,也就是打印一個(gè)空格和7個(gè)字符
// 3333.33
System.out.printf("Hello %s, you are %d.", name, age);

d:十進(jìn)制整數(shù)

x:十六進(jìn)制整數(shù)

f:定點(diǎn)浮點(diǎn)數(shù)

e:指數(shù)浮點(diǎn)數(shù)

s:字符串

c:字符

b:布爾

%:百分號(hào)

使用靜態(tài)的String.format方法創(chuàng)建一個(gè)格式化字符串,而不打印輸出:

String str = Stirng.format("Hello %s, you are %d.", name, age);
文件輸入輸出

文件讀取:

Scanner in = new Scanner(Paths.get("myfile.txt"), "UTF-8");
// Scanner(File f)
// static Path get(String pathname):根據(jù)給定路徑名構(gòu)造一個(gè)Path
// 然后使用前面介紹的Scanner的方法進(jìn)行文件讀取

如果文件名(包括其路徑,比如C:dir),中有反斜杠,則要在每個(gè)反斜杠前再加一個(gè)額外的反斜杠(因?yàn)榉葱备?b>是作為轉(zhuǎn)義字符的存在,在字符串中要表示則必須用)。

這里指定了UTF-8字符編碼,要讀取一個(gè)文本時(shí)要知道它的字符編碼,如果省略字符編碼將會(huì)使用運(yùn)行這個(gè)Java程序的機(jī)器的“默認(rèn)編碼”,不同機(jī)器可能會(huì)有不同的“默認(rèn)編碼”。

文件寫(xiě)入:

PrintWriter out = new PrintWriter("myfile.txt", "UTF-8");
// PrintWriter(String fileName)

如果文件不存在,將創(chuàng)建該文件,使用print,printf,println等方法寫(xiě)入數(shù)據(jù)。

注意,如果直接給Scanner一個(gè)字符串參數(shù),Scanner會(huì)把字符串解釋為數(shù)據(jù)而不是文件名。

Scanner in = new Scanner("myfile.txt");
// Scanner會(huì)包含10個(gè)字符的數(shù)據(jù),而不是文件數(shù)據(jù)

另外,如果使用一個(gè)不存在的文件構(gòu)造Scanner或者用一個(gè)不能被創(chuàng)建的文件名構(gòu)造一個(gè)PrintWriter將會(huì)發(fā)生異常,Java編譯器認(rèn)為這些異常比“被0除”異常更嚴(yán)重。

控制流程

Java的控制流程結(jié)構(gòu)與C和C++的一樣,只有很少的例外,Java沒(méi)有g(shù)oto語(yǔ)句,但break語(yǔ)句可以帶標(biāo)簽,可以實(shí)現(xiàn)從內(nèi)層循環(huán)跳出的目的。另外還有一種變形的for循環(huán),類似C#的foreach循環(huán)。

塊(block)作用域

塊,即復(fù)合語(yǔ)句,一對(duì)大括號(hào)括起來(lái)的若干Java語(yǔ)句,塊確定了變量的作用域。

{ // block 1
  int i;
  {
    // block 2 這是一個(gè)嵌套塊
    int j;
  }
}

但不能在嵌套的兩個(gè)塊中聲明同名變量:

{ // block 1
  int i;
  {
    // block 2
    int i; // Error
  }
}

雖然C++中,允許這樣做,內(nèi)層定義的變量會(huì)覆蓋外層定義的變量,有可能導(dǎo)致程序設(shè)計(jì)出錯(cuò),所以Java中不允許這樣做。

條件語(yǔ)句
if(condition1) { statement1 }
else if(condition2) { statement2 }
else { statement3 }
循環(huán)
while(condition) { statement }

如果希望循環(huán)體至少被執(zhí)行一次,則使用:

do { statement }
while(condition);
確定循環(huán)
for(declare; condition; refresh) { statement }
// for語(yǔ)句內(nèi)部聲明的變量無(wú)法在循環(huán)體外部使用
多重選擇
switch(condition)
{
  case 1:
    ...
    break;
  case 2:
    ...
    break;
  ...
  default:
    // no case match
    ...
    break;
}

case標(biāo)簽可以是:

類型為char、byte、short或int的常量表達(dá)式;

switch(grade)
{
  ...
  case 100:
  ...
}

枚舉常量(當(dāng)使用枚舉常量時(shí),不必在標(biāo)簽中指明枚舉名);

Size size = ....;
switch(size)
{
  ...
  case SMALL: //no need to use Size.SMALL
  ...
}

JAVA SE 7 開(kāi)始可以用字符串字面量。

switch(str)
{
  ...
  case "yes":
  ...
}

中斷控制流程

break,使用在while和for循環(huán)中,用于提前中斷循環(huán)。

Java提供一個(gè)種帶標(biāo)簽的break語(yǔ)句,用于跳出多重嵌套的循環(huán)語(yǔ)句。

tag:
while(...)
{
  ...
  for(...)
  {
    ...
    if(...)
    {
      break tag;
    }
  }
}
// 在break后會(huì)跳出綁定tag的循環(huán)體(在這里也就是while)
// 而不是像普通break只是跳出for

continue,用于跳過(guò)本次循環(huán),進(jìn)行下一次循環(huán)體的執(zhí)行。

大數(shù)值

基本的整數(shù)和浮點(diǎn)數(shù)精度不能夠滿足需求,可以使用java.math包中的兩個(gè)很有用的類:

BigInteger:任意精度的整數(shù)運(yùn)算

BigDecimal:任意精度的浮點(diǎn)數(shù)運(yùn)算

使用valueOf方法可以將普通的數(shù)值轉(zhuǎn)換為大數(shù)值:

BigInteger a = BigInteger.valueOf(100);

算術(shù)運(yùn)算符是addsubtractdividemultiply,BigInteger還有mod運(yùn)算:

BigInteger c = a.add(b);
// c = a + b
BigInteger d = c.multiply(b.add(BigInteger.valueOf(2)));
// d = c * (b + 2)

以及兩個(gè)大數(shù)的比較compareTo,相等返回0,小于返回負(fù),大于返回正。

數(shù)組

聲明數(shù)組變量:

int[] a;
int[] b = new int[100];

當(dāng)然Java中也可以int a[]的聲明方式,看個(gè)人喜好吧。

數(shù)組創(chuàng)建時(shí)的初始化:

int數(shù)組:所有元素初始化為0

boolean數(shù)組:所有元素初始化為alse

對(duì)象數(shù)組:所有元素初始化為null

獲取數(shù)組中的元素個(gè)數(shù)使用array.length

for each 循環(huán)

for each 循環(huán)語(yǔ)句的循環(huán)變量將會(huì)遍歷數(shù)組中的每個(gè)元素,而不需要使用下標(biāo)值。

for(variable:collection) { statement }

variable:用于暫存集合中的每一個(gè)元素,并執(zhí)行相應(yīng)塊

collection:必須是一個(gè)數(shù)組或者實(shí)現(xiàn)了Iterable接口的類對(duì)象(比如ArrayList)。

for(int element : a)
{
  System.out.println(element);
}
數(shù)組初始化以及匿名數(shù)組

Java中,可以創(chuàng)建數(shù)組對(duì)象的同時(shí)賦予初始值的寫(xiě)法:

// 不需要調(diào)用new
int[] a = { 2, 3, 5, 7, 11, 13 };
// 初始化一個(gè)匿名的數(shù)組
a = new int[] { 17, 19, 23, 31, 37 };
// 這是以下語(yǔ)句的簡(jiǎn)寫(xiě)方式
int[] anonymous = { 17, 19, 23, 31, 37 };
a = anonymous;

Java中允許數(shù)組長(zhǎng)度為0,但這與null不同。

數(shù)組拷貝

數(shù)組變量拷貝:

int[] b = a;
b[0] = 1;

此時(shí)a中的第一個(gè)元素a[0]的值也會(huì)被修改為1。

數(shù)組值拷貝:

int[] c = Arrays.copyOf(a, a.length);
// 第2個(gè)參數(shù)是新數(shù)組長(zhǎng)度,通常用于增加數(shù)組大小
int[] c = Arrays.copyOf(c, c.length * 2);
// 如果長(zhǎng)度小于原始數(shù)組,則只拷貝前面的數(shù)據(jù)元素
命令行參數(shù)

如果使用下面這種形式運(yùn)行一個(gè)Java程序:

java Message -g cruel world

則程序中獲取命令行參數(shù)的方法是:

public class Message
{
  public static void main(String[] args)
  {
    // args就是參數(shù)數(shù)組
    System.out.printlf(Arrays.toString(args));
    // [-g, cruel, world]
  }
}
數(shù)組排序
int[] a = new int[1000];
...
Arrays.sort(a);

sort方法使用了優(yōu)化的快速排序算法。

插播一個(gè)生成0到n-1之間隨機(jī)數(shù)的辦法:

int r = (int) (Math.random() * n);
// Math.random返回一個(gè)0-1(不包括1)的隨機(jī)浮點(diǎn)數(shù)
java.util.Arrays

static String toString(type[] a):a為基本數(shù)據(jù)類型數(shù)組(不包括字符串?dāng)?shù)組),返回字符串,元素放在中括號(hào)內(nèi),并用逗號(hào)分隔。

static type copyOf(type[] a, int length)

static type copyOfRange(type[] a, int start, int end)

返回與a類型相同的一個(gè)數(shù)組,長(zhǎng)度為length或end-start

start:起始下標(biāo)(包含這個(gè)值)

end:終止下標(biāo)(不包含這個(gè)值)

static int binarySearch(type[] a, type v)

static int binarySearch(type[] a, int start, int end, type v)

采用二分法查找值v,查找成功則返回相應(yīng)下標(biāo)值,否則返回一個(gè)負(fù)數(shù)值r,-r-1是保持a有序的v應(yīng)該插入的位置。

static void fi11(type[] a, type v):將數(shù)組的所有元素設(shè)置為v。

static boolean equals(type[] a, type[] b):數(shù)組大小相同,并且所有對(duì)應(yīng)下標(biāo)的元素都相等,則返回true。

多維數(shù)組
int[][] magicSquare = 
{
  { 16, 3, 2, 13 },
  { 5, 10, 11, 8 },
  { 9, 6, 7, 12 },
  { 4, 15, 14, 1 }
};
// 訪問(wèn)元素使用 magicSquare[i][j]
Java語(yǔ)言基礎(chǔ)總結(jié)

基本命名規(guī)則:駝峰法

三種注釋方式

8種基本數(shù)據(jù)類型

變量聲明以及命名規(guī)則

基本運(yùn)算符

數(shù)值類型的自動(dòng)與強(qiáng)制轉(zhuǎn)換

各運(yùn)算符優(yōu)先級(jí)

枚舉類型

String API

StringBuilder

命令行輸入輸出

文件輸入輸出

控制流程

中斷控制流程

大數(shù)值

數(shù)組以及相關(guān)操作

個(gè)人靜態(tài)博客:

氣泡的前端日記: https://rheabubbles.github.io

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/72868.html

相關(guān)文章

  • 那些年我看過(guò)的書(shū) —— 致敬我的大學(xué)生活 —— Say Good Bye !

    摘要:開(kāi)頭正式開(kāi)啟我入職的里程,現(xiàn)在已是工作了一個(gè)星期了,這個(gè)星期算是我入職的過(guò)渡期,算是知道了學(xué)校生活和工作的差距了,總之,盡快習(xí)慣這種生活吧。當(dāng)時(shí)是看的廖雪峰的博客自己也用做爬蟲(chóng)寫(xiě)過(guò)幾篇博客,不過(guò)有些是在前人的基礎(chǔ)上寫(xiě)的。 showImg(https://segmentfault.com/img/remote/1460000010867984); 開(kāi)頭 2017.08.21 正式開(kāi)啟我...

    xiaoqibTn 評(píng)論0 收藏0
  • 北上廣深杭房?jī)r(jià)高壓下,這也許是程序員扎根的唯一出路...

    摘要:在不考慮通脹和工資增長(zhǎng)的情況下,除去吃喝需要攢年才能攢出一線城市房子的首付,以這樣的收入水平,基本上沒(méi)法扎根。 簡(jiǎn)單算一筆賬,目前小公司Java后端工資一般是1萬(wàn)出頭,年薪普遍在20萬(wàn)以下。在不考慮通脹和工資增長(zhǎng)的情況下,除去吃喝需要攢30年才能攢出一線城市房子的首付,以這樣的收入水平,基本...

    Pink 評(píng)論0 收藏0
  • <java核心技術(shù)>讀書(shū)筆記2

    摘要:如果需要收集參數(shù)化類型對(duì)象,只有使用警告這節(jié)討論,向參數(shù)可變的方法傳遞一個(gè)泛型類型的實(shí)例。異常不能拋出或捕獲泛型類的實(shí)例實(shí)際上,泛型類擴(kuò)展也是不合法的。 Object:所有類的超類 java中每個(gè)類都是由它擴(kuò)展而來(lái),但是并不需要這樣寫(xiě):class Employee extends Object.如果沒(méi)有明確指出超類,Object類就被認(rèn)為是這個(gè)的超類。可以使用Object類型的變量引用...

    jimhs 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<