提示:大三狗,課比較多,每天晚上抽空更新內容,望理解~
文章目錄
- 前言
- 一、Java基礎
- 1.1 什么是變數:
- 1.2 型別的分類:
- 1.3 型別的大小:
- 1.4 型別的轉換與強制型別轉換:
- 二、運算子
- 1、算術運算子
- 2、賦值運算子
- 3、關系運算子
- 4、邏輯運算子
- 5、字串連接運算子
- 6、三目運算子
- 三、流程控制
- 1、接收用戶輸入
- 2、常用for、while回圈
- 3、if判斷
- 4、break和continue跳出判斷
- 四、陣列
- 1、常見陣列創建格式
- 2、陣列練習
- 2、多維陣列(了解即可)
- 總結
前言
提示:在這里可以學到Java基礎內容,
一、Java基礎
1.1 什么是變數:
變數就是系統為程式分配的一塊記憶體單元,用來存盤各種型別的資料,由于該存盤單元中的資料可以發生改變,因此得名為"變數"
1.2 型別的分類:
1、基本資料型別變數
2、參考資料型別變數

1.3 型別的大小:
1.int 4個位元組 范圍:-2147 483 648 ~ 2 147 483 (大約20億) 默認值 0
2.short 2個位元組 范圍:-32 768 ~ 32 767 默認值 0
3.long 2個位元組 范圍:-9 223 372 036 854 775 808L ~ 9 223 默認值 0
4.byte 1個位元組 范圍:-128~127 默認值 0
5.float 4個位元組 范圍:-3.40292347E+38-3.40292347E+38 默認值 0
6.double 8個位元組 范圍:-1.79769313486231570E+308-1.79769313486231570E+308
7.boolean 1個位元組 范圍: true或false 默認值:false
8.char 2個位元組 范圍:‘ \u0000 - u\ffff' 默認值:\u0000
注意: 在面試中常問 byte位元組的范圍 大家可以記住 byte 范圍 :-128~127
byte(1位元組) < short(2位元組) < int(4位元組) < long(8個位元組)
double(8位元組) > float(4位元組) >char(2位元組) >boolean(1位元組)
1.4 型別的轉換與強制型別轉換:
- boolean不能轉換成任何型別
- 自動型別轉換:自動將容量小的型別轉為容量大的型別(容量大小參照上面)
- 如果容量大的型別轉換為容量小的型別,則需要進行強制轉換
代碼如下(示例):
int c=200;
//強制型別轉換 可能會出現精度丟失
byte d= (byte) c;
System.out.println("強制型別轉換之前c為===>"+c);
System.out.println("強制轉換型別d為===>"+d);

我們看到最終強制型別轉換后,值發生了變化,
二、運算子
1、算術運算子

2、賦值運算子

3、關系運算子

4、邏輯運算子

5、字串連接運算子
代碼如下(示例):
String str="He";
String str1="llo";
System.out.println(str+str1);
結果: “Hello”
String str="He";
int num=666;
System.out.println(str+num);
結果: “He666”
注意:當型別不一致時,String型別 + int型別=String值連接int值,而不是相加
6、三目運算子
語法:布爾運算式(boolean) ? 運算式1 : 運算式2
如果布爾運算式為true執行 運算式1
如果布爾運算式為false執行 運算式2
比如: 6>5 ? “大于” : “小于” 結果為 大于
代碼如下(示例):
布爾運算式(boolean) ? 運算式1 : 運算式2
System.out.println(6>7?true:false); //結果為 false
三、流程控制
1、接收用戶輸入
//next (接收一行):當輸入遇到空格時,會認為是結束當前輸入引數命令,空格后面的輸入不再輸出 包括空格
System.out.println("請輸入next接收的引數:");
Scanner scanner = new Scanner(System.in);
String next = scanner.next();
System.out.println(next);
//nextLine(接收一行):遇到空格時,后面的內容可以照常輸出 可以接收空格后的引數
System.out.println("請輸入nextLine接收的引數:");
String nextLine = scanner.next();
System.out.println(nextLine);
2、常用for、while回圈
for(初始化; 布爾運算式; 更新) {
//代碼陳述句
}
//列印圖形
for (int i=0;i<10;i++){
if(i%2!=0){
for (int j = 0; j<i ; j++) {
System.out.print("*");
}
}
System.out.println();
}
while( 布爾運算式 ) {
//回圈內容
}
while(10>6){
System.out.println("while回圈執行");
}
3、if判斷
if(布爾運算式){
//如果布爾運算式為true將執行的陳述句
}else{
//如果布爾運算式為false執行的陳述句
}
4、break和continue跳出判斷
1. 使用了 break跳出當前回圈
for (int i = 0; i <10 ; i++) {
System.out.println("我是for回圈執行了===>"+i+"次");
if(i==5){
break;
}
}
執行結果: 當使用了break,則后面的陳述句就不在執行

2. 使用了 continue跳出回圈
for (int i = 0; i <10 ; i++) {
System.out.println("我是for回圈執行了===>"+i+"次");
if(i==5){
continue;
}
}
執行結果: 當使用了continue,則后面的陳述句繼續執行,只是跳過當前回圈
四、陣列
1、常見陣列創建格式
//常用陣列創建格式
int[] arr={10,20,30};
//常用陣列創建格式 創建10個空間
int[] arr2=new int[10];//創建了10個空間沒有賦值,默認值為0
2、陣列練習
2.1 陣列應用小練習
提示:查找陣列中的最大最小值
//判斷陣列中最大值
int[] arr={10,30,4,999,6,88,9999,6,9,20,66,666};
int max=arr[0];
for (int i = 0; i <arr.length ; i++) {
//max的值小于陣列中遍歷的i值 替換
if(max < arr[i]){//當陣列中遍歷的i值大于了max值
max=arr[i];//把當前max最大值替換掉
}
}
System.out.println(max);
System.out.println("==========");
//判斷陣列中最小值
int[] arr2={10,30,4,999,-1,-999,6,88,9999,6,9,20,66,666};
int min=arr2[0];
for (int i = 0; i <arr2.length ; i++) {
//max的值小于陣列中遍歷的i值 替換
if(min > arr2[i]){
min=arr2[i];
}
}
System.out.println(min);
}
2.2 陣列應用小練習
提示:(演算法)冒泡排序
思想:將陣列中索引為 0 的值與索引 0+1 的進行比較,此時就成了陣列中第一個值和第二個值進行比較,如果索引為0的值 大于 索引為0+1的值,那么用一個臨時變數temp來進行值的互換,然后內層for回圈 i++ 讓索引為1的值(也就是索引 0 和 1 的的最大值放到了 索引 1 也就是陣列中的第二個值 )與陣列中索引為2的值進行比較, 最終完成冒泡排序

//冒泡排序
int[] arr={3,60,4,50,9,55,66,4,100,2};
//索引是從0開始,所以回圈條件為 arr.length-1 =9
for (int i = 0; i <arr.length-1 ; i++) {//外層控制回圈輪數
for (int j = 0; j <arr.length-i-1 ; j++) {//內層比較每輪比較的次數
if(arr[j]>arr[j+1]){
int temp=arr[j];//temp為臨時變數,來進行互換值
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for (int i = 0; i <arr.length ; i++) {
System.out.println(arr[i]);
}
2.3 陣列應用小練習
提示:(演算法)二分查找/折半查找
注意:使用二分查找必須是有序的陣列,否則二分查找將無意義
理解:每次查找排除一半的數,折半查找效率較高,陣列越大,效率越大
我們需要定義一個最小索引值、最大索引值和center中間索引值,min為當前陣列中的0索引為最小值,max為當前陣列的長度-1(這里為什么是陣列長度-1我就不多說了,不理解的看往上看) ,center為(min+max)/2得到中間索引值,如果中間值 大于num(要查找的數),那么說明center右側的數都不存在num這個數,此將max改成 center-1 也就是把最大值max設為中間值的右側,如果center值<num,那么說明center左邊的值都小于num(要查找的數),我們將min改成center+1讓最小值成為center右側的第一個值,還有一種情況當min值大于max值,說明沒找到,如果這三個條件都不滿足,那么就是找到了num值,

//二分查找
//使用二分查找演算法之前必須先讓資料中的資料從小到大排序,否則二分查找將無意義
int[] arr={10,20,30,40,50,60,70,80,90};
int num=910;
//最小數值下標
int min=0;
//最大數值下標
int max=arr.length-1;
//中間數值下標
int center=(min+max)/2;
while (true){
if(arr[center] > num) {
max = center - 1;
center = (min + max) / 2;
}else if(arr[center] < num){
min=center+1;
center=(min+max)/2;
}else if(arr[center] == num){
System.out.println("找到了===>"+num+"索引為===>"+center);
break;
}
if(min>max){
center=-1;
System.out.println("位置"+center);
break;
}
}
2.4 陣列應用小練習
**提示:(力扣演算法)兩數之和

思想:我們通過雙指標來遍歷陣列進行查找是否兩數相加等于target**
Scanner scanner = new Scanner(System.in);
System.out.println("輸入陣列中要查找的數");
//要查找的target數
int target = scanner.nextInt();
boolean flag=false;
int[] arr=new int[]{1,2,7,8,9};
for (int i = 0; i <arr.length ; i++) {
for (int j = 1; j <arr.length; j++) {
if(arr[i]+arr[j] == target){
System.out.println("成功找到索引下標===>"+i+"和"+j);
flag=true;
}
}
}
if(flag==false){//說明沒有找到目標target
System.out.println("沒有找到===>"+target);
}
2.5 陣列應用小練習
提示:(力扣演算法)回文數
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入要判斷的回文數");
int x = scanner.nextInt();
String num=x+"";
String dnum = new StringBuffer(num).reverse().toString();
System.out.println(num.equals(dnum));
2、多維陣列(了解即可)
一維陣列中每一個空間存盤的是一個值
二維陣列中每一個空間存盤的是一個新的陣列

//int[一維陣列的大小][二維陣列的大小]
//int[][] 二維陣列名稱=new int[一維陣列長度][二維陣列長度];
int[][] array=new int[2][2];
//給二維陣列中賦值
array[0][0]=1;
array[0][1]=2;
array[0][2]=3;
總結
提示:本文章將持續更新!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/271292.html
標籤:其他
