第一章:初識(shí)java
1.1在eclipse建立一個(gè)class:
1.new->java project
2.new->class
1.2 打印hello word!
package Exp; //Exp為包名
public class Na { //Na為庫(kù)名
public static void main(String[] args) {
System.out.println("hello word"); //String與System都是庫(kù)
}
}
ps:
1.部分窗口調(diào)出:window->show view->console(控制臺(tái))
2.先保存,再運(yùn)行
第三章
3.7運(yùn)算符與表達(dá)式:
1)算術(shù)運(yùn)算符:
+、-、*、/、%、++、--
- /:
3.0/2 = 1.5(除法運(yùn)算)
3 / 2 =1 (整除運(yùn)算) - ++:
print(i++) 輸出5 i++為表達(dá)式的值
print(++i) 輸出6
表達(dá)式的值和變量的值
口訣:先賦值再相加
例題:
1.輸出整數(shù)各個(gè)位置上的數(shù)字
2.水仙花數(shù)
for(int i = 100;i<1000;i++)
{
int a = i%10;
int b = (i/10)%10;
int c = i/100;
if(a*a*a+b*b*b+c*c*c == i)
{
System.out.println(i);
}
}
2)關(guān)系運(yùn)算符
<、>、>=、<=、==、!=
3)邏輯運(yùn)算符
&、|、!、^、&&、||
- &為邏輯運(yùn)算符時(shí),前后為布爾型;為位運(yùn)算時(shí),前后為整型。
- &與&&:邏輯與和簡(jiǎn)潔與。
- |與||:邏輯或和簡(jiǎn)潔或
- <font face="微軟雅黑" color=#0066FF size=3> 簡(jiǎn)潔與邏輯的區(qū)別:欠著可能之極端左邊的表達(dá)式而不計(jì)算右邊的表達(dá)式,而后者必須計(jì)算完左右兩個(gè)表達(dá)式。 </font>
例題:ppt51頁(yè)
4)位運(yùn)算符
~ 按位非(not)(一元運(yùn)算)
& 按位與(AND)
| 按位或(OR)
^ 按位異或(XOR)
>> 右移
>>>0填充右移,左邊空出的0填充(二進(jìn)制100->1000)
<<左移
位運(yùn)算的某些運(yùn)算技巧
- 異或運(yùn)算:
作用一:簡(jiǎn)單數(shù)據(jù)加密(窮舉法可證)
如果a^b=c,那么c^b=a以及c^a=b(類似乘法和除法)將b做秘鑰,a為原文,c為密文
作用二:交換兩個(gè)變量(窮舉法可證)
int a = 5,b = 7;
a = a^ b;b = b^ a;a = a^b;
- <<左移運(yùn)算符
a<<b
將a各二進(jìn)制位全部左移b位后得到的值,左移越界丟棄,低位補(bǔ)0。a的值不因運(yùn)算而改變
作用:左移一位等于乘以2;可以用來(lái)開2的n次方
5)賦值運(yùn)算符
+=、-=、*=、/=、%=、&=、|=、^=、>>=、<<=、>>>=(a=a>>>b)
- 賦值運(yùn)算符
格式: 變量或?qū)ο?= 表達(dá)式
右邊可以連續(xù)賦值: a = b = c =8; - 擴(kuò)展賦值運(yùn)算符
在賦值符“=”前加上其他運(yùn)算符,即構(gòu)成擴(kuò)展賦值運(yùn)算符
例如:a+=3等價(jià)于a=a+3
例題
a = 3; a *= 3+5
24
6)條件運(yùn)算符(三目運(yùn)算符)
格式 :<表達(dá)式1>?<表達(dá)式2:<表達(dá)式3>
其中“表達(dá)式1”是一個(gè)結(jié)果為邏輯值的布爾表達(dá)式
功能:先計(jì)算<表達(dá)式1>的值,當(dāng)<表達(dá)式1>的值為true時(shí),則將<表達(dá)式2>的值作為整個(gè)表達(dá)式的值;當(dāng)<表達(dá)式1>的值為 false時(shí),則將<表達(dá)式3>的值作為整個(gè)表達(dá)式的值。
例題:
int a=1,b = 2,max;
max = a>b ? a : b;
System.out.println("max=" + max);
7) 字符串運(yùn)算符
字符串運(yùn)算符“+”完成字符串連接操作
8)運(yùn)算符的優(yōu)先級(jí)
- . [] ()
- ++ - ! ~ +(正號(hào)) -(負(fù)號(hào))
- new(類型)
- / % *
- +-(二元)
- << >> >>>
- < > <= >=
- == !=
- &
- ^
- |
- &&
- ||
- ? :
- = += -= *= /= %= <<= >>= >>>= &= ^= |=
第四章 流程控制
順序,分支,循環(huán)
4.1語(yǔ)句與復(fù)合語(yǔ)句
- JAVA不允許在兩個(gè)嵌套的復(fù)合語(yǔ)句內(nèi)聲明兩個(gè)同名的變量
public Static void main(String args[])
{
int a;
......
int a//錯(cuò)誤
} - 注釋
單行 //
多行 / * */
文件/ ** */
4.2 順序結(jié)構(gòu)
一行一行執(zhí)行,沒有判斷和跳轉(zhuǎn),直到程序結(jié)束
4.3 分支結(jié)構(gòu)
1) if條件語(yǔ)句
- 兩個(gè)
int a=1,b=2,c=3,max,min;
if(a>b)
max=a;
else
max=b;
if(c>max) max=c;
System.out.println("Max="+max);
min=a<b ? a : b;
min=c<min ? c : min;
System.out.println("Min="+min);
MAX = 3
MIN = 1
- 多個(gè)
if(條件表達(dá)式1)
{
語(yǔ)句序列 1
}
else if(條件表達(dá)式 2)
{
語(yǔ)句序列 2
}
……
else
{ }
Scanner sin = new Scanner(System.in);
int sorse = sin.nextInt();
String grade = "A";
if(sorse<60) {
grade = "D";
}
else if (sorse<70)
grade = "C";
else
grade = "B";
System.out.println(grade);
2) switch選擇語(yǔ)句
switch (表達(dá)式):
{
case 常量表達(dá)式1:
語(yǔ)句序列1;
break;
case 常量表達(dá)式1:
語(yǔ)句序列1;
break;
}
switch(sorse/10) {
case 9: //后面沒有任何值,無(wú)break。往后執(zhí)行,直到遇到break
case 10:grade = "A";
break;
case 8:
if (sorse<85)
grade = "B";
else
grade = "A";
break;
case 7:grade = "C";
break;
default:
grade = "D";
}
System.out.println(grade);
注意:
- 每個(gè)case后面一般都帶有break語(yǔ)句。
- 圓括號(hào)中的“表達(dá)式”,是整數(shù)型或字符型的量,同時(shí)應(yīng)與各個(gè)case后面的常量表達(dá)式值得類型相一致。
4.4 循環(huán)結(jié)構(gòu)
1)for
for(表達(dá)式1;條件表達(dá)式;表達(dá)式2)
{
循環(huán)體
}
for(int i = 1;i <= 10;i++)
{
sum += i;
}
變形
int i = 1;
for(;;)
{
if(i>10) break;
sum += i;
i++;
}
System.out.println(sum);
2)while循環(huán)
while(條件表達(dá)式)
{
循環(huán)體
}
例題:
1 + 2 +……+n
n!
int i = 11;
int sum = 0;
//直到循環(huán)變量的結(jié)束值時(shí),一般用for,不知道,一般用while
while(i<=10)
{
sum += i;
i++;
}
3)do-while語(yǔ)句
do
{
循環(huán)體
}while(條件表達(dá)式);
例題:
do
{
sum += i;
i++;
}while(i<=10);//(i>=10)會(huì)輸出1;(i<=10)會(huì)輸出55;do-while先做后判斷。
System.out.println(sum);
4)foreach語(yǔ)句與數(shù)組和集合
int a[] = {1,2,3,4,5,6,7,8};
for(int i:a)
{ //a中的值給i
System.out.println(i);
}
5)多重循環(huán)
例題:1!+2!+……+n!
int n,sum=0,jc;
Scanner in =new Scanner(System.in);
n=in.nextInt();
for(int i=1;i<=n;i++)
{
jc=1;
for(int j=1;j<=i;j++)
jc=jc*j;
sum=sum+jc;
}
System.out.println(sum);
4.5循環(huán)語(yǔ)句中的跳轉(zhuǎn)語(yǔ)句
return、break、continue
break:循環(huán),switch
continue:循環(huán)
第五章 數(shù)組與字符串
java的棧內(nèi)存和堆內(nèi)存
- 基本類型的變量和對(duì)象的引用變量都是在函數(shù)的棧內(nèi)存中分配
- 堆內(nèi)存用于存放有new創(chuàng)建的對(duì)象和數(shù)組
5.1數(shù)組
1)一維數(shù)組的聲明
格式:
類型表示福 數(shù)組名[ ]
類型標(biāo)識(shí)符[ ] 數(shù)組名
int a[];
int[] a;
注意:[ ]可放在變量名后,也可放在類型名后
2)用new初始化
聲明數(shù)組時(shí),沒有給數(shù)組元素分配內(nèi)存
- 先聲明數(shù)組再初始化
格式:
數(shù)組名 = new 類型標(biāo)識(shí)符[元素個(gè)數(shù)] (元素個(gè)數(shù)用整型變量)
int sorce[];
sorce = new int[10]; //分配10個(gè)內(nèi)存
- 聲明的同時(shí)進(jìn)行初始化
格式:
類型標(biāo)識(shí)符 數(shù)組名[ ] new 類型表舒服[元素個(gè)數(shù)]
或者
類型標(biāo)識(shí)符[ ] 數(shù)組名 new 類型表舒服[元素個(gè)數(shù)]
int scorce[] = new int[10];
2)靜態(tài)初始化:賦初值初始化數(shù)組
在聲明數(shù)組的同時(shí),給數(shù)組元素賦初值
格式:類型標(biāo)識(shí)符 數(shù)組名[ ]={初值表}
int scoce[]={65,34,78,81,56,92,56,87,90,77}

3)數(shù)組的長(zhǎng)度和下標(biāo)
- 數(shù)組的長(zhǎng)度
length - 元素的下標(biāo):
0~數(shù)組名 length-1
4)數(shù)組的輸入及輸出
- 輸入用for循環(huán);遍歷輸出用foreach
例題:
1)
Scanner sin = new Scanner(System.in);
int[] a1;
a1 = new int[5];
for(int i = 0;i<a1.length;i++)//輸入用for循環(huán)
{
a1[i] = sin.nextInt();
}
for (int item:a1)//用foreach遍歷
{
System.out.println(item);
}
for(int i = 5;i>=0;i--)
{
System.out.println(a1[i]);
}
2)對(duì)數(shù)組進(jìn)行統(tǒng)計(jì):輸入10個(gè)非0整數(shù),求他們的平均值,并分別統(tǒng)計(jì)這些數(shù)中正數(shù)和負(fù)數(shù)的個(gè)數(shù)
int a[] = new int[10];
Scanner sin = new Scanner(System.in);
int sum = 0,z = 0,f = 0;
for(int i = 0;i<10;i++) {
a[i] = sin.nextInt();
sum = sum +a[i];
if(a[i]>0) z++;
else f++;
}
System.out.println(sum);
System.out.println(z);
System.out.println(f);
3)求最大值和第二大值
int max = a[0];
int min = a[1];
if(min>max)
{
max = a[1];min = a[0];
}
for(int i = 2;i<n;i++)
{
if(a[i]>max) {
min = max;
max = a[i];
}
else if(a[i]>min)//a[i]<max
{
min =a[i];
}
System.out.println(max);//最大值
System.out.println(min);//第二大
}
4)輸入n個(gè)整數(shù),找出最大數(shù)
if(a[i]>max) max = a[i];
5)找出最大值下標(biāo)
if(a[index]<a[i]) index = i;
5.2二維數(shù)組
格式:類型標(biāo)識(shí)符 數(shù)組名[ ][ ] 或者類型名[ ] [ ] 數(shù)組名
例如:int a[ ] [ ];或者int [ ] [ ] a;
1)二維數(shù)組的初始化
- 用new初始化
1)先聲明再初始化
數(shù)組名 = new 類型標(biāo)識(shí)符 [行數(shù)] [列數(shù)]
例如:int a[ ][ ];或者a = new int [3][4];
2)生命的同時(shí)進(jìn)行初始化
類型標(biāo)識(shí)符 數(shù)組名[ ] [ ] = new 類型標(biāo)識(shí)符 [行數(shù)] [列數(shù)]
類型標(biāo)識(shí)符[ ] [ ] 數(shù)組名 = new 類型標(biāo)識(shí)符 [行數(shù)] [列數(shù)]
例如:int a [ ] [ ] = new int [3][4]
2)二維數(shù)組的行數(shù)和列數(shù)
int a[ ][ ] = new int [3][4];
行數(shù):a.length 3
列數(shù):
第 i 行:a[i].length 4
Scanner sin = new Scanner(System.in);
int a[][] = new int[3][]; //輸入9個(gè)
//a[0],a[1],a[2]
a[0] = new int[2];
a[1] = new int[4];
a[2] = new int[3];
for(int i = 0;i<a.length;i++) //輸入數(shù)組
{
for(int j=0;j<a[i].length;j++)
{
a[i][j]=sin.nextInt();
}
}
for(int[] a1:a) //輸出數(shù)組
{
for(int item:a1)
{
System.out.print(item+" ");
}
System.out.println();
}

3)賦初值初始化二維數(shù)組
類型標(biāo)識(shí)符 數(shù)組名 [ ] [ ] ={{初值表},{初值表}……,{初值表}};
例如:
int a [ ] [ ] = {{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
4)二維數(shù)組的輸入和輸出
輸入:
Scanner sin = new Scanner(System.in);
int a[][] = new int [2][3],i,j;
for(i=0;i<2;i++) //i<a.length
{
for(j=0;j<3;j++) //j<a[i].length
{
a[i][j]=sin.nextInt();
}
}
輸出
for(i=0;i<2;i++)
for(j=0;j<3;j++)
System.out.print(a[i][j]);
System.out.println;
5.3 字符串
1)字符串變量的創(chuàng)建
- String<變量名>;
<變量名>=new String("字符串");
例如:
String s;
s = new String("Hello");
- String <變量名>=new String("字符串");
- String<變量名> = " 字符串 "
2) String類的常用方法
調(diào)用java定義的格式
<字符串變量名>.<方法名>