資料結構
java編程語言,程式
舊程式:兩大核心組成:資料結構+演算法(語言自身 c/java)
新程式:資料結構+演算法(已經不是重點)+框架+架構
框架:mvc框架,新三大框架 springmvc+spring+mybatis
架構:分布式架構、微服務架構、開發運維一體化架構、大資料架構、人工智能
資料結構:
10+20
1)10怎么表達?20怎么表達? int a = 10; int b = 20; float c = 1.0;
資料結構,必須用合適的內容來承接
2)+怎么表達? 運算子(演算法)
3)執行
java中資料機構分幾類?
1)基本型別:8種基本型別,int,float
2)參考型別:除了基本型別就是參考型別,String
基本型別
4個整型,2個浮點,2個特殊
bit 位元0和1,1 byte=8 bit,8位
最小單位:計算機最小單位 bit,編程語言的最小單位 byte
10計算機怎么表達?二進制
1)byte 位元組,1byte=2^8=256
2)short 短整型,2byte,2^16=65536
3)int 整型,4byte,2^32,42億
4)long 長整型,8byte,2^64
5)float 單精度浮點數,4byte,2^32
6)double 雙精度浮點數,8byte,2^64
7)char 字符型,2byte,2^16,1~4byte ASCII-UTF-8
8)boolean 布爾型,true/false 1byte,2^8
需求:100用什么型別存盤?200用什么型別存盤?
package cn.tedu.data;
import org.junit.Test;
//8個基本型別
public class TestPrimiry {
@Test //需求:100用什么型別 byte?200用什么型別 short?
public void number() {
//java中默認寫一個整數,默認int型別
//Type mismatch 型別不匹配
//cannot convert from int to byte
//byte b = (byte)200; //強制轉換 -56,256/2=128
byte b = 100;
System.out.println(b);
short s = 200;
System.out.println(s);
}
}
包裝型別
通過java得到所有基本型別的取值范圍
基本型別不屬于物件,它無法去得到額外方法,例如最大值和最小值,
java為把這些基本型別轉化物件,而為它們提供包裝型別,轉化基本型別為物件,
有了這些包裝型別,它會增強我們代碼,會額外提供很多方法,開發更加快捷!
java對每個基本型別都進行封裝,都有對應包裝型別(8個)
1)byte Byte
2)short Short
3)int Integer
4)long Long
5)float Float
6)double Double
7)char Character
8)boolean Boolean
package cn.tedu.data;
import org.junit.Test;
//得到所有包裝型別的取值的范圍
public class TestScope {
@Test
public void scope() {
//位元組型取值范圍:-128~127
System.out.println("位元組型取值范圍:"
+Byte.MIN_VALUE+"~"+Byte.MAX_VALUE);
//短整型取值范圍:-32768~32767
System.out.println("短整型取值范圍:"
+Short.MIN_VALUE+"~"+Short.MAX_VALUE);
//整型取值范圍:正負21億
System.out.println("整型取值范圍:"
+Integer.MIN_VALUE+"~"+Integer.MAX_VALUE);
System.out.println("長整型取值范圍:"
+Long.MIN_VALUE+"~"+Long.MAX_VALUE);
//單精度浮點數范圍:1.4E-45~3.4028235E38,科學計數法
System.out.println("單精度浮點數范圍:"
+Float.MIN_VALUE+"~"+Float.MAX_VALUE);
System.out.println("雙精度浮點數范圍:"
+Double.MIN_VALUE+"~"+Double.MAX_VALUE);
}
}
ASCII碼表
預先定義“密碼本”,把鍵盤上09,az,,,可見的字符和不可見都進行編碼,總共128個字符
0~127,
char就有一個特性,'a’就可以97整數來替代,a是人類語言,97人類的語言,0110 0001機器的語言,
a轉化97整數,整數可以轉換為二進制,機器就可以識別,
相當于人類和機器語言互通,
ASCII表太小了,無法表達更復雜
西歐 ISO-8859-1 256字,英文,
中文 10w,6w GB2312/GBK 國標
全球的文字 unicode 字符集,編碼方式UTF-16,UTF-32,UTF-8 壓縮版(1~4)
有了ASCII碼表人類就開啟和計算機溝通交流的先河,主流unicode字符集,utf-8就是主流的編碼方式,
它之前全球的語言,
陣列
無論是基本型別,還是包裝型別,它們都只能表達一個值
int i = 10;
Integer i = new Integer(10);
需求:表達一組值
這就是陣列
package cn.tedu.data;
import java.util.Arrays;
import org.junit.Test;
//陣列,屬于參考型別,物件,物件初始值null
public class TestArray {
@Test
public void array() {
//需求:科目:語文、數學、英語、物理、化學
//1、陣列的定義
String[] courses = new String[5];
//2、給陣列的每個元素去設定值
//獲取第一個元素,下標方式,java下標從0開始
System.out.println(courses[0]);
courses[0] = "語文"; //給第一個元素賦值
System.out.println(courses[0]);
courses[1] = "數學";
courses[2] = "英語";
courses[3] = "物理";
courses[4] = "化學";
System.out.println(courses[4]);
//簡潔定義和賦值一起方式,常用
String[] c2 = {"語文","數學","英語","音樂","體育","歌舞"};
System.out.println("陣列長度:"+ c2.length);
System.out.println("第一個元素:"+ c2[0]);
//代碼盡量不要寫死
System.out.println("最后一個元素:"+c2[c2.length - 1]);
System.out.println("最后一個元素:"+c2[4]);
}
@Test
public void grade() {
//需求:語文100,數學90,英語60,物理80,化學98
int[] g = {100,90,60,80,98};
//1、總分
int sum = g[0]+g[1]+g[2]+g[3]+g[4];
System.out.println("總分:" + sum);
//2、平均分
int avg = sum/g.length;
System.out.println("平均分:" + avg);
//列印,默認列印不是內容,而是[I@1a84f40f,代表記憶體所在地址
//每個機器列印的記憶體地址不同!
System.out.println(g);
//java提供專門操作陣列的工具類:Arrays.toString()
System.out.println( Arrays.toString(g)); //把陣列變成字串列印
//排序后,原來的陣列就被覆寫
Arrays.sort(g); //升序
System.out.println( Arrays.toString(g));
//3、最高分,升序排序后,最后的值
System.out.println("最高分:"+g[g.length-1]);
//4、最低分,升序排序后,第一個的值
System.out.println("最低分:"+g[0]);
}
}
物件
在java中萬物皆物件,物件是Java中一等公民
java中創建的類,都是Object的子類
java中如果創建一個類,明確宣告extends Object,或者不寫,java會默認就繼承Object類,
?為什么java這么強調物件?為什么需要所有類都去繼承 Object呢?
因為物件可以表達萬物,java對Object增加了很多方法,toString() java直接提供,
1)基本型別和包裝型別只能表達一個值(有局限)
2)陣列只能表達一組一個型別的值(有局限)
人:姓名(字串)、性別(布爾)、年齡(整型)、成績(浮點陣列)、兒子;表達萬物,把生活中的都可以 抽象出來,使用計算機進行出來,
C語言面向程序設計思想,java語言面對物件的設計思想,
需求:人:姓名(字串)、性別(布爾)、年齡(整型)
package cn.tedu.data.pojo;
//定義物體物件:人
/*
* 標準結構有兩部分:
* 1)屬性(欄位):姓名、性別、年齡、地址
* 2)方法(函式):吃、玩
*/
public class Person {
//方法體內宣告變數區域變數,類體內宣告變數成員變數
//屬性(習慣大寫,包裝型別)
public String name; //姓名
public Boolean sex; //性別
public Integer age; //年齡
public String address; //地址
//方法
public void eat() {
System.out.println("吃遍天下美食");
}
public void play() {
System.out.println("玩遍天下無敵手");
}
}
package cn.tedu.data;
//不在同一個目錄,就需要導包
import org.junit.Test;
import cn.tedu.data.pojo.Person;
//測驗類人,呼叫Person類
//藍圖:類,類定義
//實作:new 物件,創建實體 instance
//格式:類名 物件實體名稱 = new 類名();
public class TestPerson {
@Test
public void obj() {
//1.創建物件實體
Person person = new Person();
//2.給屬性賦值,使用點運算子獲取屬性
person.name = "詹姆士邦德";
person.sex = true; //true男false女
person.age = 70;
person.address = "英國倫敦軍情六處";
//3.訪問屬性
System.out.println(person.name);
System.out.println(person.sex);
System.out.println(person.age);
System.out.println(person.address);
//4.呼叫方法,實體名稱.方法名
person.eat();
person.play();
//再創建物件
Person p2 = new Person();
p2.name = "邦德女郎";
p2.age = 18;
System.out.println(); //空行
System.out.println(p2.name);
System.out.println(p2.age);
p2.play();
}
}
小結
兩種運行方式,main和junit有什么不同?
1)不能互相替代,main是java自身提供,它的本意是類進行執行,執行入口,不可替代
junit只測驗而生,它不給用戶,它只對開發者有效
2)在一個類中main方法只有一個,而單一測驗方法很多,
3)main方法格式固定,方法名必須main;單元測驗方法名隨便起,不固定
4)運行的選單,main選單java application;單元測驗 junit Test
5)main是java直接提供,junit是第三方公司提供
怎么使用Junit單元測驗
1)找到jar支持,jar因為開發工具都支持,eclipse自帶,使用@Test注解,在專案中只需要一次
2)在類中導包 import org.junit.Test; 匯入Test.class
3)在測驗方法上戴帽子 @Test
4)RunAs/Junit Test
基本型別
java中資料結構分類:2類,基本型別(8個),參考型別(非基本型別,陣列,物件person)
為什么需要包裝型別?
byte b1 = 10; 基本型別是沒有額外方法,需要自己寫
Byte b2 = 10; 包裝型別,把基本型別封裝成物件,物件就擁有了額外方法,開發起來就更加簡單
包裝型別是基本型別還是參考型別?包裝型別是參考型別,
陣列
基本型別和包裝型別都只能表達單個值,如果很多值采用陣列
int[] arr1 = new int[10];
陣列是參考型別,陣列的元素是int基本型別
int[] arr2 = {1,2,3,43,4}; 簡寫
1)陣列長度:arr2.length 屬性
2)陣列的下標:arr2[0],下標從0開始
3)陣列第一個元素訪問:arr2[0]
4)陣列最后一個元素方法:arr2[ arr2.length-1 ]
工具類:Arrays
5)陣列列印,不是列印地址,列印內容:Arrays.toString()
6)陣列排序:Arrays.sort,副作用,覆寫原有陣列
物件
java中所有的類都是Object的子類,
物件的表現力非常方法,支持各種型別,支持各種方法,最終可以抽象生活中的萬物,
類和物件
類:藍圖(圖紙)一張
物件:具體樓(物體)多棟
創建方法:格式:類名 實體名 = new 類名();
Person person = new Person();
Cat cat = new Cat();
Car car = new Car();
Car baomaCar = new Car();
Car benchiCar = new Car():
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/290645.html
標籤:java
下一篇:JAVA803_Stream流的生產方式、forEach、filter、map、limit、skip、concat、distinct、sorted?、collect
