[轉載] JAVA面向對象之代碼塊 繼承 方法的重寫 super關鍵字與重寫toString()方法介紹

參考鏈接: 可以重寫Java中的私有方法嗎

JAVA面向對象之代碼塊與繼承?

代碼塊分類?

局部代碼塊?

作用:限制變量生命周期

書寫位置:在方法中?

構造代碼塊?

開發中很少使用

書寫位置:類中? 方法外

調用時機:如果你有構造代碼塊 系統會幫你調用 幫你在創建對象時調用?

靜態代碼塊(一定是被static修飾)?

依賴類 隨著類的加載而加載

注意:只加載一次(系統只創建一次 不管你調用多少對象)

應用場景:U盤裝載驅動程序(第二次插入U盤,不會再加載驅動程序)

? ? ? ? ?加載驅動(數據庫驅動 JDBC)?

同步代碼塊(多線程)?

這里暫時不做介紹 后續給予說明?

代碼示例?

public class Demo24 {

? ? ? ? ? ?//第三代碼塊

? ? {

? ? ? ? ?int a = 10;

? ? ? ? ?System.out.println(a);

? ? ? ? ?System.out.println("我是Demo24構造代碼塊");

? ? }

? ? public static void main(String[] args){

? ? ? ? Person2 person = new Person2();

? ? ? ? person.name = "張三";

? ? ? ? person.age = 15;

? ? ? ? person.sayHi();

? ? ? ? System.out.println("我是main函數中得普通方法");

? ? ? ? {

? ? ? ? ? ? System.out.println("我是局部代碼塊");

? ? ? ? }

? ? ? ? Person2 person1 = new Person2("李四",22);

? ? }

}

class Person2{

? ? String name;

? ? int age;

? ? //第一個代碼塊

? ? static {

? ? ? ? ? System.out.println("我是person類的靜態代碼塊");

? ? }

? ? //第二個代碼塊

? ? {

? ? ? ? //每一個對象 都會調用同一個方法 這時可以使用

? ? ? ? ? ?sleep();

? ? ? ? ? ?System.out.println("我是構造代碼塊");

? ? }

? ? public Person2(){

? ? ? ? ? ?System.out.println("我是無參數的構造方法");

? ? }

? ? public Person2(String name, int age){

? ? ? ? ? this.name = name;

? ? ? ? ? this.age = age;

? ? ? ? ? System.out.println("我是有參數的構造方法");

? ? }

?

? ? public String getName(){

? ? ? ? ? ? return name;

? ? }

? ? public void setName(){

? ? ? ? ? ? this.name = name;

? ? }

? ? public int getAge(){

? ? ? ? ? ? return age;

? ? }

? ? public void setAge(int age){

? ? ? ? ? ? ?this.age = age;

? ? }

?

? ? public void sayHi(){

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

? ? }

?

? ? ?public void sleep(){

? ? ? ? ? System.out.println("睡覺");

? ? ?}

}

?

?

運行結果?

我是person類的靜態代碼塊

睡覺

我是構造代碼塊

我是無參數的構造方法

姓名:張三年齡:15

我是main函數中得普通方法

我是局部代碼塊

睡覺

我是構造代碼塊

我是有參數的構造方法

姓名:李四年齡:22?

解釋?

當程序運行時 會先加載Demo01.class文件,進入.class文件后,會尋找靜態代碼塊,如果沒有,會繼續尋找構造代碼塊,由于沒有

Demo24類的實例對象,所有構造代碼塊與構造方法均不會執行,如果另外新建一個類,Demo25,在Demo25類中建立Demo24類的實例

對象,Demo24類中的構造代碼塊與構造方法便會執行,之后會首先尋找main函數,找到main函數后,(局部代碼塊定義在方法中,在該

方法中并沒有優先級)會首先遇到Person2類,遇到Person2 person = new Person2();這時會加載Person2類,

加載Person2.class文件,靜態代碼塊與靜態方法和靜態屬性一樣,會隨著類的加載而加載,存放在方法區的靜態區,與對象無關,所

以在加載Person2.class文件時,會將static代碼塊一同加載,所有會輸出'我是Person類的靜態代碼塊',之后需要new一個對象,

繼續執行Person2類中的代碼,執行時,會先尋找有沒有構造代碼塊(構造代碼塊存放在類中方法外,優先級高于構造方法);發現有構

造代碼塊,即先執行構造代碼塊,構造代碼塊中有sleep方法,故先執行sleep方法,打印'睡覺',之后執行下一句,打印'我是構造代碼

塊',構造代碼塊執行之后,會執行相應的構造方法(有參或者無參),構造代碼塊優先于構造方法執行,與構造代碼塊的位置無關,new

對象的時候沒有傳遞參數,所有這里調用無參構造方法,打印'我是無參數的構造方法',之后回到Demo01函數,對對象中的變量進行賦

值,賦完值后,調用對象的sayHi方法,打印'姓名:張三','年齡:15',隨后執行到打印語句,打印出"我是main函數中得普通方法",

之后遇到局部代碼塊,打印"我是局部代碼塊"(順序執行),當new第二個Person2對象時,靜態代碼塊不會再執行,即在函數運行過

程中,只會加載一次,非靜態構造代碼塊將會繼續加載,第二次new對象時候,先執行構造代碼塊,構造代碼塊中有sleep方法,所有會

先執行sleep方法,打印"睡覺",隨后打印"我是構造代碼塊",new對象時候,傳進來了參數,所有會調用Person2類中的有參數構造

方法,打印"我是有參數的構造方法",賦值后,調用sayHi方法,打印"姓名:李四年齡22",函數運行結束.?

繼承?

繼承特點?

1.減少你的代碼量

2.讓類與類之間產生關聯(產生 父子的)?

繼承弊端?

當父類中添加新德屬性時候,比如白血病,子類即使不想繼承這個屬性,卻還是由于

繼承的關系,自動得到了白血病這個屬性?

注意?

1.繼承時? 可把多個類中 相同的功能或方法 抽取出來 重新構造一個類出來??

把這些類建立 繼承關系

2.建立繼承關系的同時 一定要符合邏輯(切記不要為了繼承而繼承)

3.繼承使用關鍵字:extends?

舉例?

繼承:

手機類? <打電話 發短信 玩游戲>

蘋果手機類 繼承 手機類 <打電話 發短信 玩游戲 爆炸>

小米手機類 繼承 手機類 <打電話 發短信 玩游戲 暖手功能>?

項目經理:姓名 工資 工號 分紅

程序員:姓名 工資 工號

?

項目經理 繼承 程序員 就繼承了姓名 工資 和 工號 ,特有功能 分紅 這樣不行?

不符合邏輯

應該是相同的功能抽取出來

員工類 姓名 工資 工號

項目經理 和 程序員 繼承員工類? 這樣才符合邏輯?

注意?

如果是繼承關系 一定符合什么是什么

項目經理是員工 子類是父類的?

動物 貓 狗 馬

貓 是 動物 √

動物 是 貓 ×

?

水果(父類) 香蕉 蘋果 橘子

水果 是 香蕉 ×

香蕉 是 水果 √?

繼承的寫法?

class 子類 extends 父類{

?

}?

代碼示例?

/*

?* 貓類

?* 姓名 顏色? 種類 會睡覺 會抓老鼠

?* 狗類?

?* 姓名 顏色? 種類 會睡覺 會啃骨頭

?*/

?

// 抽取出 相同部分 組成 動物類

public class Demo02{

? ? public static void main(String[] args){

? ? ? ? Cat cat = new Cat();

? ? ? ? cat.name = "湯姆";

? ? ? ? cat.color = "灰色";

? ? ? ? cat.kind = "灰貓";

? ? ? ? cat.sleep();

? ? ? ? cat.sayHi();

? ? }

}

?

class Animal{

? ? String name;

? ? String color;

? ? String kind;

?

? ? public void sleep(){

? ? ? ? System.out.println("睡覺");

? ? }

? ? public void sayHi(){

? ? ? ? System.out.println("姓名:" + name +"顏色:" + color + "種類:" + kind);

? ? }

}

?

class Cat extends Animal{

? ? public void hitMouse(){

? ? ? ? System.out.println("抓老鼠");

? ? }

}

?

class Dog extends Animal{

? ? public void eatBone(){

? ? ? ? System.out.println("啃骨頭");

? ? }

}?

運行結果:?

抓老鼠

睡覺

姓名:湯姆顏色:灰色種類:灰貓?

JAVA中的繼承?

注意?

1.java 只允許 單繼承(多繼承 可以 使用 接口 來間接實現)

2.java 中 允許 多層繼承(爺爺 父親 兒子 孫子 重孫子....)

?

java中 最頂層的父類(最基礎類) Object類

如果我這個類沒有寫 繼承哪個父親 默認就是繼承 Object類?

1.如果我要使用 這些 類中 共有的方法(屬性) 使用 哪個類?

? ? 創建當前繼承中最 頂端的 類 去使用

2.如果我要使用 這些 類中 特有的方法(屬性) 使用 哪個類?

? ? 創建當前繼承中 最末端類 去使用?

代碼示例?

public class Demo03 extends Object{

?

}

//A類 爺爺類 B類 是父親 C類 是 孫子類

//A類中又name C類中 會叫爺爺

?

class A extends Object{

? ? String name;

}

?

class B extends A{

?

}

class C extends B{

? ? public void speak(){

? ? ? ? System.out.println("會叫爺爺");

? ? }

}?

構造方法能不能被繼承??

爺爺 父親 兒子

爹 和 兒子 都用同一中 方法生出來 行嗎? 亂

奶奶不愿意? 媽媽不愿意

?

構造方法是不能被繼承的

?

為了保證繼承的完整性 在你創建對象的時候

如果你不調用 父類的構造方法?

系統會幫你去調用 父類的無參構造方法?

代碼舉例?

public class Demo04{

? ? public static void main(String[] args){

? ? ? ? Son son = new Son();

? ? ? ? son.name = "張三";

? ? ? ? son.sayHi();

?

? ? ? ? //有參構造對象

? ? ? ? Son son2 = new Son("小明");

? ? ? ? son2.sayHi();

? ? }

}

?

class Father{

? ? String name;

? ? //有參 無參 構造方法

? ? public Father(){

? ? ? ? System.out.println("我是無參構造方法");

? ? }

? ? public Father(String name){

? ? ? ? this.name = name;

? ? ? ? System.out.println("我是有參構造方法");

? ? }

? ? public void sayHi(){

? ? ? ? System.out.println("姓名:" + name);

? ? }

}

?

class Son extends Father{

? ? //無參構造

? ? public Son(){

? ? ? ? //如果你沒有在子類的構造方法中 調用父類的構造方法

? ? ? ? //系統會默認給你的子類構造方法中 添加一行代碼

? ? ? ? super();//調用父類的 無參構造方法

? ? ? ? System.out.println("我是兒子類的無參構造方法");

? ? }

? ? //有參的

? ? public Son(String name){

? ? ? ? //如果你沒有在子類的構造方法中 調用父類的構造方法

? ? ? ? //系統 會默認 給你的子類 構造方法中 添加一行代碼

? ? ? ? super(); //系統幫你調用父類的構造方法

? ? ? ? this.name = name;

? ? ? ? System.out.println("我是兒子類的有參構造方法");

? ? }

}?

輸出結果?

我是爸爸類無參的構造方法

我是兒子類無參構造方法

張三

?

我是爸爸類無參的構造方法

我是兒子類有參的構造方法

小明?

結果解釋?

當new一個Son對象時,由于沒有傳進去參數,所以會先調用兒子類的無參構造方法,

由于Son類是Father的子類,所有在子類的構造方法中會自動調用父類的無參構造方

法,從而實現Son類的實例對象同時具有Son類與Father類的屬性與方法,因此先打印

父類無參構造方法中的"我是爸爸類的無參構造方法",之后返回子類構造方法,打印

子類無參構造器中得"我是兒子類無參構造方法",之后對Son的nane屬性賦值,調用s

ayHi方法將姓名打出

?

第二次new一個Son類對象的時候,傳進去姓名這個參數,所有會調用Son類中得有參

構造方法,該有參構造方法中第一句會先執行super(),即會先執行父類無參構造方

法,向上調用父類構造方法時,沒有傳進去參數,所有不會調用父類有參構造方法,打

印"我是爸爸類無參構造方法"后,返回子類,即Son類,打印"我是兒子類有參構造方

法",然后將姓名賦值,隨后返回main函數,調用sayHi方法將name打印出來.?

super關鍵字?

super 用于指向子類對象中的父類對象(構造方法)? 相當于父類的對象

super 調用對象 super.對象

super 調用方法 super.方法()

?

?

super(); 調用父類的構造方法

this();? 調用的是本類的構造方法?

代碼示例?

public class Demo05{

? ? public static void main(String[] args){

? ? ? ? TestB b = new TestB();

? ? ? ? b.fun();

? ? }

}

?

class TestA{

? ? int num1 = 10;

? ? int num2 = 20;

?

? ? public void sayHi(){

? ? ? ? System.out.println("我是父類的sayHi方法");

? ? }

}

?

class TestB extends TestA{

? ? int num1 = 30;

?

? ? public void fun(){

? ? ? ? //使用this時 會先在本類中尋找該屬性

? ? ? ? //沒找到 就去父類中找? 就近原則

? ? ? ? System.out.println(this.num1);? //30

? ? ? ? System.out.println(this.num2);? //20

? ? ? ? System.out.println(this.num3);? //10

? ? }

}?

思考:如果父類中沒有無參構造方法 咋整??

建議:不管是父類 還是 子類 構造方法一定要寫全,避免出現問題?

代碼舉例?

public class Demo04{

?

}

class Phone{

? ? String name;

?

? ? public Phone(){

?

? ? }

? ? public Phone(String name){

? ? ? ? this.name = name;

? ? }

}

class MI extends Phone{

? ? public MI(){

? ? ? ? //子類的構造方法 如果你什么都不寫 會默認調父類無參構造

? ? ? ? //如果父類中 沒有無參構造 就證明父類中一定有有參的構造方法

? ? ? ? //父類構造方法無論有參 還是 無參, 子類的構造方法都必須要調用一個

?

?

? ? ? ? //必須手動指定一個有參構造方法去調用

? ? ? ? super("Note2");

? ? }

? ? public MI(String name){

? ? ? ? super(name);

? ? }

}?

方法的重寫?

思考: 如果父類 和 子類的 方法 重名了,咋整?能不能重名?

?

答案是可以? 方法的重寫?

注意?

1.方法的聲明完全一致的 叫方法的重寫

2.方法的重寫建立在類與類之間有繼承關系(子類重寫父類的方法)?

Override(重寫)和Overload(重載) 的區別?

1.重寫前提:需要繼承關系

重載:在同一個類里面實現

?

2.重寫:需要方法的聲明完全一致

重載:相同的功能,不同的實現方式 只跟參數有關?

代碼示例?

public class Demo07{

? ? public static void main(String[] args){

? ? ? ? IOS8 ios8 = new IOS8();

? ? ? ? ios8.siri();

?

? ? ? ? //如果直接打印對象 相當于 系統幫你打印時 調用 toString()方法

? ? ? ? System.out.println(ios8);? ?//輸出haha

? ? ? ? System.out.println(ios8.toString());? ?//輸出haha

? ? }

}

?

class IOS7{

? ? public void call(){

? ? ? ? System.out.println("打電話");

? ? }

?

? ? public void siri(){

? ? ? ? System.out.println("說英文");

? ? }

}

?

class IOS8 extends IOS7{

? ? //方法的重寫:對父類的方法 進行一個功能上的升級

? ? //調不調父類的方法 要根據實際情況

? ? public void siri(){

? ? ? ? //中 英文都會說

? ? ? ? super.siri();? ?//調用父類的方法

? ? ? ? System.out.println("會說中文");

? ? }

? ? //重寫toString()方法

? ? //利用toString方法 來寫介紹自己的方法

? ? public String toString(){

? ? ? ? return "haha";

? ? }

}?

重寫toString()方法介紹?

toString方法是Object類中的一個方法,故所有繼承Object類的類,這些類中都有toString方法;

假設有一個類為Animal,他的一個對象為animal,則System.out.println(animal),

打印出來的是一個全限定類名com.lanou3g.IOS7@33909752,而打印System.out.println(animal.toString),

.lanou3g.IOS7@33909752,即包名+類名+@33909752,說明打印animal與打印animal.toString()的結果是一樣的,toString()方法寫完整則是

public String toString(){},即說明toString方法是有返還值的,即打印animal.t

oString()的結果,打印的是toString()函數中return語句返還的值,而打印animal

的結果又與打印animal.toString()方法的值相同,說明打印對象名所得到的結果就

是toString中return語句返還的結果,所有重寫Object類中得toString方法,改變re

turn語句的返還值,然后直接打印對象名,便可以得到自己想要的結果.具體結果如上面代碼所示?

實例練習繼承關系?

需求?

?

老師類 學生類??

* 無參 有參構造 set/get方法 成員變量私有化 介紹自己的方法

? 屬性:姓名,年齡

* 行為:吃飯

* 老師有特有的方法:講課

* 學生有特有的方法:學習?

代碼實現?

package com.lanou3g;

?

?

public class Demo08 {

? ? public static void main(String[] args) {

? ? ? ? //創建一個學生

? ? ? ? Student student = new Student("王龍",15,1);

? ? ? ? System.out.println(student);

?

? ? ? ? Teacher teacher = new Teacher("劉",13);

? ? ? ? System.out.println(teacher);

? ? }

}

class Person1{

? ? //屬性

? ? //繼承中private修飾的變量 是不能直接訪問的 但可以間接訪問的

? ? private String name;

? ? private int age;

? ? //構造方法

? ? public Person1() {

?

? ? }

? ? public Person1(String name, int age) {

? ? ? ? this.name = name;

? ? ? ? this.age = age;

? ? }

? ? //set/get方法

? ? public String getName() {

? ? ? ? return name;

? ? }

? ? public void setName(String name) {

? ? ? ? this.name = name;

? ? }

? ? public int getAge() {

? ? ? ? return age;

? ? }

? ? public void setAge(int age) {

? ? ? ? this.age = age;

? ? }

? ? //特有方法

? ? public void eat() {

? ? ? ? System.out.println("吃飯");

? ? }

? ? //介紹自己的方法

? ? @Override

? ? public String toString() {

? ? ? ? // TODO Auto-generated method stub

? ? ? ? return "姓名:" + name + "年齡" + age;

? ? }

?

}

//學生類

class Student extends Person1{

? ? //學號

? ? private int num;

?

? ? public int getNum() {

? ? ? ? return num;

? ? }

? ? public void setNum(int num) {

? ? ? ? this.num = num;

? ? }

? ? //構造方法

? ? public Student(){

? ? }

? ? //有參

? ? public Student(String name, int age, int num) {

? ? ? ? //直接調用父類的構造方法 完成賦值初始化

? ? ? ? //為了保證繼承的完整性 在子類構造方法中

? ? ? ? //第一行 必須調用父類的構造方法(無參 有參都行)

? ? ? ? super(name,age);

? ? ? ? //特有屬性 直接賦值就行

? ? ? ? this.num = num;

? ? }

? ? public void study() {

? ? ? ? System.out.println("學生在學習");

? ? }

? ? //介紹自己的方法

? ? @Override

? ? public String toString() {

? ? ? ? //可以在父類的基礎上 添加自己特有的屬性 去打印

? ? ? ? return super.toString() + "學號:" + num;

? ? }

}

//教師類

class Teacher extends Person1 {

? ? public Teacher(){

?

? ? }

? ? public Teacher(String name, int num) {

? ? ? ? super(name,num);

? ? }

? ? public void teach() {? ? ? ?

? ? ? ? System.out.println("老師會講課");

? ? }

? ? @Override

? ? public String toString() {

? ? ? ? // TODO Auto-generated method stub

? ? ? ? return super.toString();

? ? }

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/540271.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/540271.shtml
英文地址,請注明出處:http://en.pswp.cn/news/540271.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

struts2中s:select標簽的使用

轉自&#xff1a;https://www.cnblogs.com/Sara-shi/archive/2013/03/13/struts2_select.html 1 靜態生成 <s:select name"user.sex" list"#{0:男,1:女}" label"性別" headerKey"" headerValue"請選擇性別"></s:se…

[轉載] JAVA面試題大全(part_1)

參考鏈接&#xff1a; 對Java中派生類方法更嚴格的訪問 JAVA面試題大全(part_1) 1、面向對象的特征有哪些方面 (1)抽象&#xff1a; 抽象就是忽略一個主題中與當前目標無關的那些方面&#xff0c;以便更充分地注意與當前目標有關的方面。抽象并不打算了解全部問題&#xf…

使用mysqladmin命令修改MySQL密碼與忘記密碼

修改密碼&#xff1a; 1.例如你的 root用戶現在沒有密碼&#xff0c;你希望的密碼修改為123456&#xff0c;那么命令是&#xff1a; mysqladmin -u root password 123456 2.如果你的root現在有密碼了&#xff08;123456&#xff09;&#xff0c;那么修改密碼為abcdef的命令是&a…

[轉載] java面試100問+參考答案

參考鏈接&#xff1a; 對Java中派生類方法更嚴格的訪問 1、面向對象的特征有哪些方面 (1).抽象&#xff1a; 抽象就是忽略一個主題中與當前目標無關的那些方面&#xff0c;以便更充分地注意與當前目標有關的方面。抽象并不打算了解全部問題&#xff0c;而只是選擇其中的…

工作所用的模塊回滾腳本

俗話說的好&#xff1a;“真男人從來不回滾”&#xff0c;但是家中常備一個回滾腳本也是很有必要的&#xff0c;我所在公司的服務器模塊名都是在初始化的時候寫進/etc/role_install這個文件里&#xff0c;如下圖的這個服務器就是fss服務器&#xff1a; 再比如下面這個服務器&am…

Linux服務器性能評估與優化

一、影響Linux服務器性能的因素 1. 操作系統級 CPU 內存 磁盤I/O帶寬 網絡I/O帶寬 2. 程序應用級 二、系統性能評估標準影響性能因素評判標準好壞糟糕CPUuser% sys%< 70%user% sys% 85%user% sys% >90%內存Swap In&#xff08;si&…

[轉載] Java序列化的幾種方式以及序列化的作用

參考鏈接&#xff1a; Java中帶有繼承的對象序列化 文章轉載自&#xff1a; 本文著重講解一下Java序列化的相關內容。 如果對Java序列化感興趣的同學可以研究一下。 一.Java序列化的作用 有的時候我們想要把一個Java對象變成字節流的形式傳出去&#xff0c;有的時候我們…

nginx 非80、443端口跳轉到80、443

其實很簡單: 123if ($server_port ! 80 ) { rewrite ^/(.*)$ http://$host/$1 permanent; }舉一反三。。。 123if ($server_port ! 443 ) { rewrite ^/(.*)$ https://$host/$1 permanent; }123if ($host ! host ) { rewrite ^/(.*)$ http://host/$1 permanent; }本文轉自 ninny…

[轉載] 一文徹底搞懂父類引用指向子類對象問題

參考鏈接&#xff1a; 用子類引用子類對象 vs 父類引用 public class Father { private String name; private int age; private int weight; public void eat() { System.out.println("Father is eating"); } private void run() { System.out.println("Runin…

把控站外seo效果的幾個操作點

把控站外seo效果的幾個操作點 實際上&#xff0c;站外的seo不僅僅是外鏈這么簡單&#xff0c;還包括用戶行為&#xff08;點擊&#xff09;&#xff0c;品牌詞曝光等工作。大部分情況下&#xff0c;我們所說的站外優化就是發外鏈。本文就外鏈相關事宜&#xff0c;講解些許操作點…

[轉載] 【C語言】fopen C4996錯誤解決

參考鏈接&#xff1a; C和C#重載可以與繼承一起使用嗎 C4996 fopen: This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 解決方案&#xff1a;添加宏定…

Quartus II 8.1 詳解--有圖---圖片詳解 【1講】

Quartus II 8.1 詳解--有圖---圖片詳解 看圖片比較清楚&#xff0c;比文章清楚的多 本文轉自 zhangguangyi 51CTO博客&#xff0c;原文鏈接http://blog.51cto.com/bosszhang/808019:

[轉載] JAVA數組實現學生成績統計

參考鏈接&#xff1a; Java程序的輸出 20(繼承) 一、項目名稱 數組實現學生成績統計 二、項目描述 1.項目簡介&#xff1a; 由用戶輸入學生人數與名字&#xff0c;并定義當前學期課程數與課程名&#xff0c;并分別錄入每位學生每門課程成績&#xff0c;系統顯示輸入每位學生每…

建立同步文件的腳本

為避免一個一個的去修改每一個服務器的配置文件&#xff0c;只需要rsync同步一下就可以搞定#!/bin/bash#rsync.shLOCAL_DIR"/opt/admin"test -n "$hosts" || hosts"xxxx xxxx"REMOTE_DIR"/opt/"RSYNC_LOG"/opt/var/log/rsync.log…

[轉載] Java三元運算符示例

參考鏈接&#xff1a; Java中的運算符 本示例說明如何編寫Java三元運算符。 這是語法 condition ? get_this_if_true : get_this_if_false Java三元運算符語法 (n > 18) ? true : false; (n true) ? 1 : 0; (n null) ? n.getValue() : 0; 1. Java三元運算符 …

shell下的進度條和最大最小平均值

進度條 C語言下的進度條參考我原來的一篇blog->進度條 1234567891011121314151617181920212223function proc() {i0 str arr(| / - \\) index0 while [ $i -le 100 ] do printf "[%-101s][%d%%][%c]\r" "$str" "$i" "${arr[$index]}&qu…

[轉載] 你真的會用 Java 中的三目運算符嗎

參考鏈接&#xff1a; Java中的按位運算符 轉載:http://blog.jobbole.com/93511/ 寫在前面&#xff1a; 三目運算符是我們經常在代碼中使用的&#xff0c;a (bnull?0:1); 這樣一行代碼可以代替一個 if-else&#xff0c;可以使代碼變得清爽易讀。但是&#xff0c;三目運算符也…

HTTP Keep-Alive模式

1、什么是Keep-Alive模式&#xff1f; 我們知道HTTP協議采用“請求-應答”模式&#xff0c;當使用普通模式&#xff0c;即非KeepAlive模式時&#xff0c;每個請求/應答客戶和服務器都要新建一個連接&#xff0c;完成 之后立即斷開連接&#xff08;HTTP協議為無連接的協議&#…

[轉載] java:比較運算符

參考鏈接&#xff1a; Java中的new運算符 1.compareTo()方法: compareTo()方法返回的是一個int類型值. //聲明的值 BigDecimal t_sell1 new BigDecimal(); BigDecimal t_sell2 new BigDecimal(); if(t_sell1.compareTo(t_sell2)0){ return "t_sell1的值等于t_sell2&…

[轉載] java左移右移和無符號右移

參考鏈接&#xff1a; Java中的按位右移運算符 ###知識點 java的三種位移運算符&#xff1a; <<&#xff1a;左移運算符&#xff0c;num << 1,相當于num乘以2 >>&#xff1a;右移運算符&#xff0c;num >> 1,相當于num除以2 >>>&#xff1a…