一些Java基礎知識
資料型別
(由於有很多是與c語言的資料型別相同,所以不做具體講述)
*注意:
(1)Java中,整型資料的長度與平臺無關,而c/c++整型資料的長度是與平臺相關的。
(2)不同於c/c++,Java不支援無符號型別(unsigned).
資料型別轉換
資料型別的轉換,分為自動轉換和強制轉換。自動轉換是程式在執行過程中“悄然”進行的轉換,不需要使用者提前宣告,一般是從位數低的型別向位數高的型別轉換;強制型別轉換則必須在程式碼中宣告,轉換順序不受限制。
強制型別轉換:強制轉換的格式是在需要轉型的資料前加上“( )”,然後在括號內加入需要轉化的資料型別。有的資料經過轉型運算後,精度會丟失,而有的會更加精確,下面的例子可以說明這個問題。
Java流程控制
Java流程控制的語法與 C/C++ 類似,也有 if...else、while、do...while、for、switch...case等,這裡不再具體講述。
為大家分享一個例子:九乘九乘法表
執行結果
數 組
與C、C++不同,Java在定義陣列時並不為陣列元素分配記憶體,因此[ ]中無需指定陣列元素的個數,即陣列長度。而且對於如上定義的一個數組是不能訪問它的任何元素的,我們必須要為它分配記憶體空間,這時要用到運算子new,其格式如下:
arrayName=new type[arraySize];
其中,arraySize 為陣列的長度,type 為陣列的型別。
字 符 串
String stringName ="liudongqing ";
字串可以通過“+”連線,基本資料型別與字串進行“+”操作一般也會自動轉換為字串,
String字串與陣列有一個共同點,就是它們被初始化後,長度是不變的,並且內容也不變。如果要改變它的值,就會產生一個新的字串,如下所示:
String str ="Hello ";
str +="World!";
String str = "Hello";
str += "World!";
這個賦值表示式看起來有點像簡單的接龍,在str後面直接加上一個“World!”字串,形成最後的字串“Hello World!”
String的值是不可變的,每次對String的操作都會生成新的String物件,不僅效率低,而且耗費大量記憶體空間。
StringBuffer類和String類一樣,也用來表示字串,但是StringBuffer的內部實現方式和String不同,在進行字串處理時,不生成新的物件,在記憶體使用上要優於String。
StringBuffer 預設分配16位元組長度的緩衝區,當字串超過該大小時,會自動增加緩衝區長度,而不是生成新的物件。
StringBuffer不像String,只能通過 new
來建立物件,不支援簡寫方式,例如:
StringBuffer str1 = new StringBuffer();// 分配16個位元組長度的緩衝區
StringBuffer str2 = =new StringBuffer(512);// 分配512個位元組長度的緩衝區
// 在緩衝區中存放了字串,並在後面預留了16個位元組長度的空緩衝區
StringBuffer str3 = newStringBuffer("www.weixueyuan.net");
Java中的類可以看作c語言中結構體的升級版,它的成員不僅可以是變數,還可以是函式。通過類定義的變數叫做“物件”。
C語言中的結構體
struct Student{ // 結構體包含的變數 char *name; int age; float score; }; |
Java中的類的實現
public class Student{ // 通過class關鍵字類定義類 // 類包含的變數 String name; int age; float score; // 類包含的函式 void say(){ System.out.println( name + "的年齡是 " + age + ",成績是 " + score ); } } |
*:c語言中通過結構體名臣就可以完成結構體變數的定義,並分配記憶體空間;但是在Java中,不會分配記憶體空間,必須通過new關鍵字完成記憶體空間的分配。
可以將類比喻成圖紙,物件比喻成零件,圖紙說明了零件的引數及其承擔的責任;一張圖紙可以生產出同一種類型的零件;不同圖紙可以生產不同型別的零件。
在Java中,使用new關鍵字,就可以通過類來建立物件,這個過程叫做類的例項化,物件是類的一個例項。
Student stu=new Student();
*:類只起到說明的作用,不佔用記憶體空間。
類所包含的變數稱為“屬性”,函式成為“方法”。
一個類可以包含以下型別變數
區域性變數:在方法或者語句塊中的變數成為區域性變數。變數宣告和初始化都是在方法中,方法結束後,變數會自動銷燬。
成員變數:定義在類中,方法體之外的變數。
類變數:宣告在類中,方法體之外,但必須宣告為static型別。
構造方法
程式碼實現
/** |
*注意:
(1)構造方法不能被顯示呼叫
(2)構造方法沒有返回值
談談訪問修飾符
訪問控制和繼承
在子類中的訪問許可權不能低於父類中的訪問許可權。
Java變數的作用域
在Java中,變數的作用域分為四個級別:類級、物件例項級、方法級、塊級。
類級變數又稱全域性級變數或靜態變數,需要使用static關鍵字修飾。類級變數在類定義後就已經存在,佔用記憶體空間,可以通過類名來訪問,不需要例項化。
物件例項級變數就是成員變數,例項化後才會分配記憶體空間,才能訪問。
方法級變數就是在方法內部定義的變數,就是區域性變數。
塊級變數就是定義在一個塊內部的變數,變數的生存週期就是這個塊,出了這個塊就消失了,比如 if、for
語句的塊。塊是指由大括號包圍的程式碼
/** * Created by LDQ on 2017/4/27. */ public class zuoyongyu { public static String name = "劉東清"; // 類級變數 public int i; // 物件例項級變數 // 屬性塊,在類初始化屬性時候執行 { int j = 2;// 塊級變數 } public void test1() { int j = 3; // 方法級變數 if(j == 3) { int k = 5; // 塊級變數 } // 這裡不能訪問塊級變數,塊級變數只能在塊內部訪問 System.out.println("name=" + name + ", i=" + i + ", j=" + j); //System.out.println(k) ;此處訪問會報錯 } public static void main(String[] args) { // 不建立物件,直接通過類名訪問類級變數 System.out.println(zuoyongyu.name); // 建立物件並訪問它的方法 zuoyongyu t = new zuoyongyu(); t.test1(); } } |
繼 承
一個新類從已有類獲得屬性和方法,這種現象叫做繼承。
Java只支援單繼承,不允許多繼承。
單繼承是指一個子類只有一個父類。
多繼承是指一個子類可以有多個父類。
繼承的好處:
-
為多型創造條件
-
程式碼重用
-
形成類的一種層次體系結構
繼承許可權問題
子類中的所有方法內部可以訪問父類中除私有成員外的所有成員。*注意:無法繼承構造方法,在子類的構造方法中,可以通過super(引數列表)呼叫父類構造方法,且只能放在構造方法內的第一句。
通過子類物件可以訪問:
-
子類本身的所有成員
-
父類除私有成員以外的成員
子類可以繼承父類除私有成員外的所有成員。
方法重寫
指在子類中重新定義父類中已有的方法。
重寫方法和被重寫方法有相同的返回值型別,引數列表,方法名稱。
重寫方法時,不能使用被重寫方法更低的訪問許可權。
多 態
一個父類的引用變數既可以指向父類物件也可以指向子類物件,它可以根據當時指向的不同,呼叫不同時刻指向的不同,自動呼叫不同物件,這就是多型。
/** |
*注意:
(1)子類物件可以賦值給父類引用,但父類物件不能賦值給子類引用。
(2) 通過父類引用只能訪問子類物件從父類繼承過來的成員,不能訪問子類特有成員。
靜態成員屬於類本身,即使不建立物件,也可以通過類本省來訪問static成員。
靜態成員分為:
-
靜態資料成員
-
靜態成員方法
呼叫靜態成員的方法:
-
類名.靜態成員名
-
類物件名.靜態成員名
示例:通過一個static成員,統計總共建立了多少個物件
/** |
在靜態方法中只能直接呼叫同類中的靜態成員,而不能直接訪問類中的非靜態成員。
靜態方法只能訪問靜態成員,但非靜態方法可以訪問靜態成員。
靜態方法中不能以任何形式引用this和super關鍵字。
*注意:static型別的成員記憶體不會被自動回收,容易造成記憶體洩漏。
抽 象 類
抽象類通常用來作為一個類族最頂層的父類。
抽象類:
-
用abstract關鍵字來修飾一個類時,該類則是抽象類。
-
包含抽象方法的類必須宣告為抽象類。
-
抽象類可以不包含抽象方法。
-
有抽象方法的一定是抽象類。
-
不能new出抽象類物件。
抽象方法:
-
只給出方法的方法頭,不給出具體的實現。
-
凡是沒有方法體的方法必須加abstract關鍵字修飾為抽象方法。
可以將子類物件的地址賦給抽象類的引用,通過抽象類的引用呼叫子類從父類繼承的方法,即通過抽象類實現多型。
示例:
/** |
Final
Final可以修飾:
-
整個類
-
類中的若干屬性和方法。
final 修飾整個類時表示該類不可被繼承。
public final class A{……};
final 修飾類中的屬性時,表示該屬性必須被賦初值,且只能賦一次。
初始化的方法:
-
定義變數的同時初始化
-
在建構函式中初始化
*注意:類中所有的普通方法均不可修改被宣告為final的成員變數的值。
修飾類中的方法時,表示該方法可被繼承,但不可重寫。
介面(interface)
就是抽象方法和常量值的集合。
介面中定義的屬性必須是public static final型別的,方法必須是public abstract的。
介面中的屬性不可被修改。
一個類只能實現介面,不能繼承介面。但一個介面可以繼承一個介面,且允許多繼承。
如果一個類只實現了一個介面的部分方法,該類必須
宣告為抽象類。
一個類在繼承父類的同時可以實現一個或多個介面,但extends必須在implements之前。
不可以new一個介面物件,但可以定義一個介面引用型別的變數並將其指向實現介面的物件,從而達到多型度的目的。
/** |
介面與抽象類的區別:
-
介面中的方法不允許有方法體,但抽象類中卻允許。
-
Java類不允許多繼承,但介面允許多繼承。
相關推薦
一些Java基礎知識
資料型別 (由於有很多是與c語言的資料型別相同,所以不做具體講述) *注意: (1)Java中,整型資料的長度與平臺無關,而c/c++整型資料的長度是與平臺相關的。 (2)不同於c/c++,Java不支援無符號型別(unsigned). 資料型別轉換 資料型別的轉換,分
Java基礎知識中的一些關鍵字
1、break關鍵字: break 語句用於終止最近的封閉迴圈或它所在的switch 語句。控制傳遞給終止語句後面的語句(如果有的話)。 適用:for迴圈 、 switch兩種迴圈語句。 break的用法: 1. 單獨使用。
一些必須知道的JAVA基礎知識
作為一名Android開發人員,面試的時候也會經常被問到一些java基礎方面的。這就前段時間面試中遇到的一些java方面的,可能不全,只是我面試中遇到的。 寫這篇部落格只是為了自己在以後的
Java基礎知識二次學習--第八章 流
cti 註意 spa 基礎 2個 cnblogs images 方向 視頻 第八章 流 時間:2017年4月28日11:03:07~2017年4月28日11:41:54 章節:08章_01節 視頻長度:21:15 內容:IO初步 心得: 所有的流在java.io包裏面
java基礎知識應用--雙色球開獎號碼
雙色球開獎 java基礎 開獎號碼 public 雙色球是中國福利彩票的玩法,雙色球分為紅色球號碼區和藍色球號碼區,紅色球號碼區由1-33共33個號碼組成,藍色球號碼區由1-16共16個號碼組成,開獎號碼由6個不重復的紅色球號碼和1個藍色球號碼共7個數組成。 首先要設置三個數組來分別保存
JAVA 基礎知識 第二波~
部分 申請 ava 去掉 nbsp 特定 spa family 語言 Java 之Java概述 1.計算機語言發展史 第一代 打孔器-- 純機器語言 第二代 匯編 第三代 C,Pascal,Fortran 面向過程的語言
Java基礎知識整理(一)
顯式 sys 轉換 強制 print pri 字符 parse ger Java開發環境JDK(Java編輯器、Java運行工具(JRE作用)、Java文檔生成工具、Java打包工具) 1.Java是嚴格區分大小寫的。2.Java程序中一句連續的字符串不能分開在兩行書寫,
java基礎知識匯總6(html篇)
多個 替代 設置 func 粗體 mage java基礎 scrip option 五、html // 定義文檔類型。 < html> 定義 HTML 文檔。 < body> 定義文檔的主體。 < h1> t
Java基礎知識:Java知識簡介
構造方法 sign () 結束 字母 信息 set 需要 double 一、java基礎語法: 一個Java程序可以認為是一系列對象的集合,而這些對象通過調用彼此的方法來協同工作。下面簡要介紹下類、對象、方法和實例變量的概念。 對象:對象是類的一個實例,有狀態和行為。例
Java基礎知識_畢向東_Java基礎視頻教程筆記(5-10)
efi color 逗號 ret 語句 簡單的 靜態成員 throws 解決 06天-05-面向對象(幫助文檔的制作javadoc):java文檔生成命令:javadoc -d filepatn demo.java -author -version(可選)一個類中默認會
java基礎知識積累總結
發生 數據 相互轉換 移動智能終端 產生 包含 dep while 順序 參考:http://www.importnew.com/22083.html 參考:http://www.importnew.com/22087.html 十分感謝原作者的匯總,我在這個基礎上,有所改
Java基礎知識_畢向東_Java基礎視頻教程筆記(13)
書寫 線程 定位 obi binarys hexstring 替換 ringbuf 3.5 13天-01-String String類適用於描述字符串事物。 常見的操作:1.獲取: 1.1字符串中包含的字符數,也就是字符串的長度。 int length():獲取長度
java基礎知識之圖形程序設計-1
public clas location image ima 線程 圖形用戶界面 位置 title 經過一段時期java語法的學習,從現在開始,我將進行圖形用戶界面(GUI)的java程序學習。以下是我對此的一點學習筆記。 在java1.0出現初期,采用了A
java基礎知識--繼承
但是 port [] 3.1 語句 ring 都是 -c ffffff 繼承 1、繼承的概念 繼承是java面向對象編程技術的一塊基石,因為它允許創建分等級層次的類。 繼承就是子類繼承父類的特征和行為,使得子類對象(實例)具有父類的實例域和方法,或子類從父類繼承方法,使
Java基礎知識思維導圖
-a log 思維 data box csdn disable clas ava Java基礎知識思維導圖
java基礎知識學習--------之枚舉類型(1)
blog 枚舉類型 csdn 相同 名稱 枚舉類 java string pac 枚舉類型的概念: 1 /** 2 * 目的:枚舉類型 3 * @author chenyanlong 4 * 日期:2017/10/22 5 * 網址:http://blo
模擬QQ聊天與視頻聊天同時進行-------java基礎知識總結
span img mage java基礎知識 java基礎 @override args pub spa 前言:多線程的知識 代碼: 1 package com.day13.math; 2 /** 3 * 類說明 :模擬QQ聊天與視頻聊天同時進行 4 * @a
集合框架基礎知識-----java基礎知識
訪問 java集合框架 pan 至少 組成 常見 .get htable equals Java集合框架 :接口:Collection、List 、Set、 Map;實現類:ArrayList、LinkedList、Vector、HashSet、TreeSet、HashMa
core Java基礎知識匯總
java基礎collection和collections有什麽區別?collection是一個接口集合,它提供了一系列對集合對象進行操作的通用接口方法,設計這個接口的目的是為各種不同的集合提供一個統一的接口方法。collections是集合類的一個包裝類,它提供了一系列靜態的方法和對集合進行索引、排序、線程安
構造方法和一般方法的區別(面試)-----java基礎知識總結
col 進行 span round 構造方法 基礎知識 fff font size 構造方法:對象創建時,就會調用與之對應的構造方法,對對象進行初始化; 一般方法:對象創建後,需要方法功能時才會調用。 構造方法,在對象創建時,會調用且只調用一次。