Java - Day6

?static關(guān)鍵字

1, 使用static聲明屬性 ? static聲明全局屬性

2, 使用static聲明方法 ? 直接通過(guò)類名調(diào)用

3, 注意: ?使用static方法的時(shí)候, 只能訪問(wèn)static聲明的屬性和方法, 而非static聲明的屬性和方法是不能訪問(wèn)的

代碼:

class Doctor{

String name;

static int age = 30;//static聲明的屬性為全局屬性

public Doctor(String name){

this.name = name;

}

public void tell() {

System.out.println("姓名"+name+"? 年齡"+age);

}

}

public class StaticDemo01 {

public static void main(String[] args) {

// TODO Auto-generated method stub

Doctor.age = 40; //用static 聲明的屬性可以直接用類名來(lái)調(diào)用

Doctor d1 = new Doctor("張三");

d1.tell();

Doctor d2 = new Doctor("李四");

d2.tell();

say();//如果say方法里去掉了static, 則會(huì)出錯(cuò)

}

public static void say() {

System.out.println("此處為了驗(yàn)證使用static方法的時(shí)候, 只能訪問(wèn)static聲明的屬性和方法");

}}

由static修飾的方法稱為類方法或靜態(tài)方法

靜態(tài)變量:

1, 由static修飾的變量稱為靜態(tài)變量, 也稱類變量

2, 靜態(tài)變量定義的位置是在方法之外

3, 靜態(tài)變量與靜態(tài)方法都是在類從磁盤(pán)加載至內(nèi)存后被創(chuàng)建的,與類同時(shí)存在, 同時(shí)消失

4, 靜態(tài)變量又稱類的成員變量, 在類中是全局變量, 可以被類中的所有方法調(diào)用

5, 靜態(tài)變量的值右JVM自動(dòng)初始化, 以下是各類型變量初始化值列表:

方法:

方法代表一段代碼, Java的代碼通常都封裝在方法中. 例如main方法, main方法是Java規(guī)定的每個(gè)類的代碼運(yùn)行入口

Java的代碼通常要在方法中編寫(xiě), 即代碼封裝在方法中

模塊化編程: 將具有某種功能的代碼塊封裝在一個(gè)方法中, 不同的代碼塊由不同的方法封裝, 利于程序的管理,維護(hù)

將具有復(fù)用價(jià)值的代碼封裝在方法中, 調(diào)用該代碼塊時(shí),只需調(diào)用方法名, 這樣能有效的減少程序的冗余

帶參方法:

static void 方法名(類型1 變量1, 類型2 變量2, ...){ 方法體 -方法中的代碼}

示例: static void feeling(String cause, String content){方法中的代碼};

帶參方法可以接收外界傳遞的數(shù)據(jù), 使得方法能處理更加復(fù)雜的問(wèn)題, 具有更靈活的功能.

代碼

public class Test23 {

static String name;

static int age;

static float height;

static char sex;

public static void main(String[] args) {

input();

fell("中獎(jiǎng)了", "哈哈");

input();

fell("心情不好", "嗚嗚");

}

static void fell(String cause, String face){

System.out.println(cause+ face);

}

static void input(){

Scanner scanner = new Scanner(System.in);

System.out.println("姓名:");

name = scanner.next();

System.out.println("年齡:");

age = scanner.nextInt();

System.out.println("性別:");

sex = scanner.next().charAt(0);

System.out.println("身高:");

height = scanner.nextFloat();

System.out.println("嗨,大家好, 我是"+name+"年齡是"+age+"歲,性別為"+sex+"身高"+height);

}

}

帶返回值的方法

1, 在Java的Math類中定義了許都具有計(jì)算功能的方法, 這些方法也稱為函數(shù)

2,Java 允許定義具有計(jì)算及返回功能的方法;

示例:

定義一個(gè)能保留小數(shù)點(diǎn)后任意位的方法pround, 在main方法中調(diào)用該方法, 保留指定小數(shù)點(diǎn)后任意位

代碼:

public class Test24 {

public static void main(String[] args) {

//對(duì)2.345四舍五入并保留小數(shù)點(diǎn)后兩位

double result = pround(2.345, 2);

System.out.println(result);

}

static double pround(double value, int n) {

//step1: 計(jì)算10的n次方

double pow10 = Math.pow(10, n);

//step2: 定義result變量保存計(jì)算結(jié)果

double result = value * pow10;

//step3, 對(duì)index+1位進(jìn)行四舍五入

result = Math.round(result);

//step4,環(huán)境value的值

result = result/pow10;

return result;

}

}

Java語(yǔ)言邏輯運(yùn)算

邏輯運(yùn)算種類

邏輯與運(yùn)算

特點(diǎn): 當(dāng)兩個(gè)關(guān)系運(yùn)算的結(jié)果都是true時(shí), 運(yùn)算的結(jié)果是true, 否則是false

長(zhǎng)路與運(yùn)算

1 運(yùn)算符號(hào): &

2 &在兩邊都是整數(shù)時(shí), 是逐位與運(yùn)算;在兩邊是關(guān)系運(yùn)算時(shí)時(shí)邏輯運(yùn)算

3, 長(zhǎng)路與運(yùn)算會(huì)把兩邊的關(guān)系運(yùn)算結(jié)果都計(jì)算出來(lái)

例如: ?4<3 & 5*3>12 ?step1: 計(jì)算4<3 是false ?step2:計(jì)算5*3>12 是true ?step3: false&true ,結(jié)果是false

?短路與運(yùn)算

1, 運(yùn)算符號(hào):&&

2, 短路與運(yùn)算的特點(diǎn): 當(dāng)運(yùn)算符左邊的關(guān)系運(yùn)算結(jié)果是false時(shí), 不再對(duì)右邊的關(guān)系運(yùn)算進(jìn)行計(jì)算

邏輯或運(yùn)算:

當(dāng)兩個(gè)關(guān)系運(yùn)算的結(jié)果有一個(gè)是true時(shí), 運(yùn)算的結(jié)果是true, 否則為false

長(zhǎng)路或運(yùn)算:

1, 運(yùn)算符:|

2, 長(zhǎng)路或運(yùn)算在兩邊都是整數(shù)時(shí), 是逐為或運(yùn)算;在兩邊是關(guān)系運(yùn)算時(shí),是邏輯運(yùn)算

3, 長(zhǎng)路或運(yùn)算會(huì)將兩邊的關(guān)系運(yùn)算結(jié)果都計(jì)算出來(lái)

短路或運(yùn)算:

1, 運(yùn)算符:||

2,短路或運(yùn)算的特點(diǎn): 當(dāng)運(yùn)算符號(hào)左邊的關(guān)系運(yùn)算結(jié)果是true時(shí), 不再進(jìn)行右邊的關(guān)系運(yùn)算, 直接得出true的結(jié)果

三中邏輯運(yùn)算的優(yōu)先級(jí): ?非運(yùn)算最高, 其次是與運(yùn)算, 優(yōu)先級(jí)最低的是或運(yùn)算, 例:

16進(jìn)制的1位數(shù)代表2進(jìn)制的4位數(shù)?

例如:十六進(jìn)制的41=二進(jìn)制的 01000001;

循環(huán)

while

例: 打印輸出所有大寫(xiě)字母和對(duì)應(yīng)的unicode碼:

//方法1:

int i= 65;

while(i<=65+25){

System.out.println((char)i+":"+i);

i++;

}

//方法二

char c = 'A';

while(c<='Z'){

System.out.println(c+":"+(int)c);

c++;

}

do while語(yǔ)句:

代碼:

char c = 'A';

do {

System.out.println(c+":"+(int)c);

c++;

} while (c<='Z');

switch語(yǔ)句:

代碼:

Scanner scanner = new Scanner(System.in);

System.out.println("請(qǐng)輸入五分制分?jǐn)?shù):");

int i = scanner.nextInt();

switch (i) {

case 5:

System.out.println("優(yōu)秀");

break;

case 4:

System.out.println("良好");

break;

case 3:

System.out.println("及格");

break;

case 2:

case 1:

case 0:

System.out.println("不及格");

break;

default:

System.out.println("輸入的不是五分制分?jǐn)?shù)");

break;

}

案例 ;輸入月份, 輸出對(duì)應(yīng)月的天數(shù)

Scanner scanner = new Scanner(System.in);

System.out.println("請(qǐng)輸入月份:");

int month = scanner.nextInt();

switch (month) {

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

System.out.println("30天");

break;

case 2:

System.out.println("28天");

break;

case 4:

case 6:

case 9:

case 11:

System.out.println("30天");

break;

default:

System.out.println("輸入的不是月份");

break;

}

}

}

String

?代碼:

String str1 = "hello";//給字符串str1賦值

String str2 = new String("hello");//給字符串str2賦值

System.out.println(str1 == str2);//結(jié)果為false

System.out.println(str1.equals(str2));//結(jié)果為true

// 注意: "=="比較的是地址? equals 比較的是內(nèi)容

string字符串常用方法:

1, 字符串長(zhǎng)度: length()方法

2, 字符串轉(zhuǎn)換為數(shù)組: toCharArray();

代碼:?

String str = " ? jikexueyuan@163.com";

char data[] = str.toCharArray();

for (int i = 0; i < data.length; i++) {

System.out.println(data[i]+" ");

}

3, 從字符串中取出指定位置的字符: charAt();

str.charAt(0);

4, 字符串與byte數(shù)組進(jìn)行轉(zhuǎn)換: getBytes();

byte bytes[] = str.getBytes();

5, 過(guò)濾字符串中存在的字符: indexOf();

str.indexOf("@");//如果有則返回當(dāng)前位置, 如果沒(méi)有則返回-1;

6, 去掉字符串的前后空格: trim();

7,從字符串中取出子字符串: subString()

8,大小寫(xiě)轉(zhuǎn)換: toLowerCase() ?toUpperCase()

9, 判斷字符串的開(kāi)頭結(jié)尾字符: endsWith() ?startWith()

10, 替換String字符串中的一個(gè)字符: replace();

Java字符串之StringBuffer

1, 認(rèn)識(shí)StringBuffer: 緩沖區(qū), 本身也是操作字符串, 但是與String不同, StringBuffer是可以更改的, StringBuffer是一個(gè)操作類, 所以必須通過(guò)實(shí)例化進(jìn)行操作

代碼:

StringBuffer s = new StringBuffer();

s.append("ss");

System.out.println(str.toString());//ss

tell(s);

System.out.println(s.toString());//ss love ss

}

public static void tell(StringBuffer s) {

s.append(" love ss");

}

2, StringBuffer的常用方法:

append(): 追加操作

insert():插入操作

代碼:

StringBuffer s = new StringBuffer();

s.append("ss");

s.insert(0, "love ss");

System.out.println(s.toString());

replace():替換? s.replace(1, 2, "ii");//第一個(gè)參數(shù)開(kāi)始位置, 第二個(gè)參數(shù)結(jié)束位置, 三個(gè)參數(shù)是改的字符串

indexOf():

StringBuilder

1, 一個(gè)可變的字符序列, 該類被設(shè)計(jì)作用StringBuffer的一個(gè)簡(jiǎn)易替換, 用在字符串緩沖區(qū)被單個(gè)線程使用的時(shí)候, 建議優(yōu)先考慮該類, 速度比StringBuffer要快

2, 但是如果設(shè)計(jì)到線程安全方面, 建議使用StringBuffer.

3, 常用方法: append() ? insert()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,321評(píng)論 6 543
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,559評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 178,442評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,835評(píng)論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,581評(píng)論 6 412
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,922評(píng)論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,931評(píng)論 3 447
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 43,096評(píng)論 0 290
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,639評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,374評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,591評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,104評(píng)論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,789評(píng)論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 35,196評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 36,524評(píng)論 1 295
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,322評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,554評(píng)論 2 379

推薦閱讀更多精彩內(nèi)容

  • 【程序1】 題目:古典問(wèn)題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)兔...
    葉總韓閱讀 5,151評(píng)論 0 41
  • Java經(jīng)典問(wèn)題算法大全 /*【程序1】 題目:古典問(wèn)題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子...
    趙宇_阿特奇閱讀 1,891評(píng)論 0 2
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,737評(píng)論 18 399
  • 第一章 初識(shí)javaJAVA 第一講:什么是程序?:為了讓計(jì)算機(jī)執(zhí)行某些操作或解決某個(gè)問(wèn)題而編寫(xiě)的一系列有序指令的...
    人子日月幾點(diǎn)閱讀 543評(píng)論 0 1
  • 知子莫若父,前半句應(yīng)該是母子總連心,父親對(duì)兒子的了解源于對(duì)母親的深刻了解,就象你的小脾氣,發(fā)起來(lái)連豪氣的外公都怕,...
    博樂(lè)師閱讀 172評(píng)論 0 1