java基礎2(黑馬)

一、變量里的數據在計算機中的存儲原理

1.二進制

.二進制:只有0、1,?按照逢二進一的方式表示數據。

十進制數字11轉換為:1011

方法:除二取余法

計算機中表示數據的最小單元,一個字節(Byte,簡稱B,是使用8個二進制位組成的),字節,是8位一組。

字節中的每一個二進制位就稱為位(bit,簡稱b),1B=8b。

2.字符

字符在計算機中的存儲是通過把字符變成編號,把字符編號的二進制保存起來

ASCII編碼表:即美國信息交換標準碼,規定了現代英語、數字字符、和其他西歐字符對應的數字編號。

package cn.chang.variable;
public class ASCIIDemo1 {    public static void main(String[] args) {// 目標:掌握ASCII編碼表的編碼特點System.out.println('a' + 10);    // 97 + 10 = 107       System.out.println('A' + 10);    // 65 + 10 = 75System.out.println('0' + 10);    // 48 + 10 = 58 }}

字符A對應的是65;

字符a對應的是97;

數字0對應的是48;

2.進制轉換

二進制轉十進制:

八進制和十六進制:

為了便于觀察和表示二進制,推出了八進制和十六進制。

97:0110 0001

八進制:二進制每三位一組,就是八進制。?

97,八進制就是141。

000?-> 0

111 ->?7

公共是8個數據。

十六進制:依次用0~9,A、B、C、D、E、F來表示。二進制每四位一組。

250:1111 1010? ?十六進制:FA

注意:

Java程序中支持書寫二進制、八進制和十六進制的數據,分別需要以0B或0b、0、0X或0x開頭。

例:

package cn.chang.variable;
public class ASCIIDemo1 {public static void main(String[] args) { // 目標:掌握ASCII編碼表的編碼特點int a1 = 0B01100001;      // 97的二進制System.out.println(a1);int a2 = 0141;            // 97的八進制System.out.println(a2);int a3 = 0XFA;            // 250的十六進制System.out.println(a3);}}

3.單位

計算機的數據單位:

1)計算機表示數據的最小單位是:字節,1B=8b;

2)在B的基礎上,計算機發展出了KB、MB、GB、TB、……這些數據單位。

1B = 8b

1KB = 1024B

1MB = 1024KB

1GB = 1024MB

1TB = 1024GB

二、數據類型

數據類型的分類:基本數據類型和引用數據類型

在Java中,有8種基本數據類型來存儲數值、字符和布爾值。

1.基礎數據類型

4大類:整形、浮點型、字符串、布爾型

注:

1.?long型的取值范圍比int型大,所以在賦值的時候要和int型做區分,需要在整數后面加L或者l。

2.在默認情況下,小數都被看成是double型,若想使用float型聲明小數,則需要在小數后面添加F或f。

2.引用數據類型

String稱之為字符串類型,定義的變量可以用于記住一個字符串數據。

package cn.chang.variable;
public class VariableDemo2 {    public static void main(String[] args) {// 目標: 引用數據類型// 5. StringString name = "張三";System.out.println(name);}
}

三、類型轉換

1.自動類型轉換

類型范圍小的變量,可以直接賦值給類型范圍大的變量

例:byte類型的變量可以直接賦值給int類型的變量

package cn.chang.type;
public class TypeConversionDemo1 {public static void main(String[] args) {// 目標:理解自動類型轉換機制byte a = 12;int b = a;      // 發生了自動類型轉換 System.out.println(a); System.out.println(b);}
}

自動類型轉換的其他形式:

2.表達式的自動類型轉換

在表達式中,小范圍類型的變量,會自動轉換成成表達式較大范圍的類型,再參與運算。

注意事項:

表達式的最終結果類型是由表達式中的最高類型決定。

在表達式中,byte、short、char是直接轉換成int類型參與運算的。

package cn.chang.type;
public class TypeConversionDemo2 {public static void main(String[] args) { // 目標:掌握表達式的自動類型轉換機制byte a = 10;int b = 20;long c = 30;long res1 = a + b + c;               // 表達式的最高類型是long類型System.out.println(res1);double res2 = a + b + 1.0;            // 表達式中的最高類型是double類型System.out.println(res2);byte i = 10;short j = 30;int res3 = i + j;         // 表達式中,byte、short、char是直接轉換成int類型參與運算的。        System.out.println(res3);byte ii = 10;byte jj = 80;int res4 = ii + jj;       // 表達式中,byte、short、char是直接轉換成int類型參與運算的。        System.out.println(res4);}
}

3.強制類型轉換:

大范圍類型的變量賦值給小范圍類型的變量

package cn.chang.type;
public class TypeConversionDemo3 {    public static void main(String[] args) {        // 目標:強制類型轉換,顯示轉換int a = 1500;byte b  = (byte) a;     // Alt + Enter回車鍵 選擇菜單第一項,強制類型轉換        System.out.println(b);}
}

類型范圍大的數據賦值給范圍小的數據,IDEA會出現報錯。

原因:可能會導致精度缺失

注意事項:

1)強制類型轉換可能造成數據丟失溢出,精度丟失。

2)浮點型轉換成整型,直接丟掉小數部分,保留整數部分返回。

四、運算符

1.基本算術運算符

注:

在Java中,兩個整數相除結果還是整數。

“+”符號與字符串運算的時候是用作連接符的,其結果依然是一個字符串

2.自增自減運算符

注意:

++、-- 只能操作變量、不能操作字面量

package cn.chang.operator;
public class OperatorDemo2 {public static void main(String[] args) {// 目標:掌握變量自增自減運算符的使用int a = 10;a++;        // a = a + 1++a;System.out.println(a);int b = 10;b--;       // b = b - 1--b;System.out.println(b);}
}

自增自減的使用注意事項:

++、--如果非單獨使用(如在表達式中,或者同時有其他操作),放在變量前后會存在明顯區別。

1)放在變量前面,先對變量進行+1、-1,再拿變量的值進行運算

b=++a;? ->?a?= a + 1;?b =a ;

2)放在變量的后面,先對變量的值進行運算,然后再對變量進行+1,-1;

b?= a++; ->?b?= a; a = a + 1;

3.賦值運算符

基礎賦值運算符就是“=”,從右往左看。

int a = 10;     // 把數字10賦值給左邊的變量a存儲。

擴展賦值運算符:

4.關系運算符

判斷數據是否滿足條件,最終會返回一個判斷的結果,這個結果是布爾類型的值,true或false。

在Java中,判斷是否相等,一定是“==”,千萬不要把==寫成“=”,寫成“=”,就是賦值了

5.邏輯運算符

結論:

1)在Java中,“&”,“|”:無論左邊是true或者false,右邊都要執行

2)由于&&、||運算效率更高,在開發中用的更頻繁

package cn.chang.operator;
public class OperatorDemo5 {public static void main(String[] args) {// 目標:掌握Java邏輯運算符的使用// && int i = 10;int j = 20;System.out.println(i > 100 && ++j > 10);   // 短路與,右邊的代碼不執行        System.out.println(j);                     // 20, 說明++j確實沒有執行System.out.println(i > 100 & ++j > 10);     // 單與System.out.println(j);                      // 21, 說明右邊的代碼執行了}
}

Scanner

API:Application Programming Interface:應用程序編程接口,Java寫好的程序,程序員可以直接拿來調用。

Java為自己寫好的程序提供了相應的 程序使用說明書(API文檔)

使用Scanner接收用戶鍵盤輸入的數據,需要三個步驟:

①:導包:告訴程序去JDK的哪個包中找掃描器技術一

import java.util.Scanner;

②:抄代碼:代表得到鍵盤掃描器對象(東西)。

Scanner sc=new Scanner(System.in);

③:抄代碼:等待接收用戶輸入數據
int age = sc.nextInt()
System.out.println(“年齡是:”+ age);

注意:System、string在]DK中的ava.lang包下lang包不需要我們導包,是默認的包。

package cn.chang.Scanner;
import java.util.Scanner;
public class ScannerDemo1 {public static void main(String[] args) {// 目標:掌握Scanner掃描器的功能Scanner sc = new Scanner(System.in);System.out.println("請輸入您的年齡:");int age = sc.nextInt();System.out.println("請輸入您的姓名:"); String name = sc.next();System.out.println("您的年齡是:" + age + "," + "您的名字是:" + name + "。");}
}

在程序中,直接輸入Scanner,IDEA自動進行導包操作。所以,非常方便。

我們通過的是Scanner類來獲取用戶的輸入的。

導包:Scanner類就是在java.util包下的,所以需要將該包導入。

五、分支和循環

1.分支

if分支有三種形式

package?cn.chang.branch;
import java.util.Scanner;
public class IfDemo1 {    public static void main(String[] args) {        // 目標:需要同學們掌握If分支的三種形式的用法和執行流程        // 需求:測量用戶體溫、發現體溫高于37度就報警????????double?t?=?38.9;        if (t > 37) {            System.out.println("這個人溫度異常!");        }
        // 需求:發紅包、你的錢包余額是99元,現在要發出90元。        // 如果錢夠,觸發發紅包的動作,如果錢不夠,則提示余額不足:        double money = 99;        if (money >= 90) {            System.out.println("發紅包成功了!");        }else {            System.out.println("余額不足!");        }
        // 需求3:某個公司有一個績效系統,根據員工的打分輸出對應的績效級別。        // [0-60] D [60-80] C [80-90] B [90-100] A        Scanner sc = new Scanner(System.in);        System.out.println("請輸入員工積分:");        int score = sc.nextInt();
        if (score >= 0 && score < 60) {            System.out.println("D");        }else if(score >= 60 && score < 80) {            System.out.println("C");        }else if(score >= 80 && score < 90) {            System.out.println("B");        }else if(score >= 90 && score <= 100) {            System.out.println("A");        }else {            System.out.println("您輸入的積分有問題!");        }    }}

Switch分支

是通過比較值來決定執行哪條分支。

switch分支的執行流程

1)先執行表達式的值,再拿著這個值去與case后的值進行匹配;

2)與哪個case后面的值匹配值為true,就執行哪個case塊的代碼,遇到break,就跳出switch分支。

3)如果全部case后的值與之匹配都是false,則執行default塊的代碼。

2.循環

for循環:控制一段代碼反復執行多次。

for循環的基本結構

for 循環案例詳細流程說明:

例子:

1-100的奇數和

package cn.chang.loop;public class ForDemo2 {public static void main(String[] args) {// 定義變量sum用于求和int sum = 0;// for循環for (int i = 1; i <= 100; i += 2) {sum += i;  // sum = sum + i}System.out.println("1-100的奇數和: " + sum);}
}

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

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

相關文章

【戒抖音系列】短視頻戒除-1-對推薦算法進行干擾

如今推薦算法已經滲透到人們生活的方方面面&#xff0c;尤其是抖音等短視頻核心就是推薦算法。 【短視頻的危害】 1> 會讓人變笨&#xff0c;慢慢讓人喪失注意力與專注力 2> 讓人喪失閱讀長文的能力 3> 讓人沉浸在一個又一個快感與嗨點當中。當我們刷短視頻時&#x…

docker安裝es及分詞器ik

系統是macos&#xff0c;docker是docker-desktop 拉取鏡像 docker pull bitnami/elasticsearch 啟動docker鏡像 docker create -e "discovery.typesingle-node" \ --name elasticsearch1 -p 9200:9200 -p 9300:9300 \ bitnami/elasticsearch:8.17.1 測試是否好…

CSS Position(定位)詳解及舉例說明

在CSS中&#xff0c;position屬性用于指定元素的定位類型。通過設置不同的position值&#xff0c;我們可以控制元素在頁面中的布局方式。position屬性有五個常用的值&#xff1a;static、relative、fixed、absolute和sticky。本文將詳細介紹這五種定位方式&#xff0c;并通過實…

AlwaysOn 可用性組副本所在服務器以及該副本上數據庫的各項狀態信息

目錄標題 語句代碼解釋&#xff1a;1. sys.dm_hadr_database_replica_states 視圖字段詳細解釋及官網鏈接官網鏈接字段解釋 2. sys.availability_replicas 視圖字段詳細解釋及官網鏈接官網鏈接字段解釋 查看視圖的創建語句方法一&#xff1a;使用 SQL Server Management Studio…

GPU-Z重磅更新,Blackwell架構全面支持

由TechPowerUp傾力打造的GPU-Z&#xff0c;是一款集顯卡信息查看、實時監控與深度診斷于一體的強大工具。它以其輕巧靈便的體積、完全免費的使用模式以及極其友好的操作界面&#xff0c;贏得了全球無數用戶的青睞與信任&#xff0c;成為PC硬件領域中不可或缺的軟件。 GPU-Z不僅…

c++11總結26——std::regex

std::regex 是 C11 引入的 正則表達式庫&#xff0c;用于 字符串匹配、搜索和替換。 &#x1f539; 頭文件&#xff1a;#include <regex> &#x1f539; 命名空間&#xff1a;std &#x1f539; 支持的匹配模式&#xff1a;ECMAScript&#xff08;默認&#xff09;、POS…

程序詩篇里的靈動筆觸:指針繪就數據的夢幻藍圖<6>

大家好啊&#xff0c;我是小象?(?ω?)? 我的博客&#xff1a;Xiao Xiangζ????? 很高興見到大家&#xff0c;希望能夠和大家一起交流學習&#xff0c;共同進步。 今天我們繼續來學習數組指針變量&#xff0c;二維數組傳參的本質&#xff0c;函數指針變量&#xff0c;…

MySQL時間類型相關總結(DATETIME, TIMESTAMP, DATE, TIME, YEAR)

MySQL時間類型相關總結(DATETIME, TIMESTAMP, DATE, TIME, YEAR) MySQL官方文檔&#xff1a; https://dev.mysql.com/doc/refman/8.0/en/date-and-time-types.html 一. 對比&#xff1a; 在 MySQL 中&#xff0c;處理時間相關的數據類型主要有以下幾種&#xff1a;DATE、TIME、…

前綴和練習——洛谷P8218:求區間和

題目: 這道題很簡單&#xff0c;直接根據題目無腦套公式 代碼&#xff1a; #include<bits/stdc.h> using namespace std; const int N 1e5 9; using ll long long; ll a[N], perfix[N]; int main() {ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);//取消同步輸…

【STM32】藍牙模塊數據包解析

使用到的藍牙模塊為DX-BT24&#xff0c;他可以將串口轉藍牙&#xff0c;實現與手機藍牙的通信&#xff0c;本次實現使用手機藍牙發送數據包來控制單片機LED的亮滅&#xff0c;規則如下&#xff1a; AA 05 01 FF AF 該數據包表示包頭為AA&#xff0c;05表示該數據包的大小&#…

NSS-DAY2

Crypto [HNCTF 2022 Week1]A dictator 題目&#xff1a; from random import randint from secret import flagoffset randint(1,100) % 26 # print(offset)assert flag.startswith(NSSCTF{) assert all([ord(c) not in range(ord(A),ord(Z)) for c in flag[7:-1]])for cha…

【vue3 入門到實戰】7. 標簽中的 ref

目錄 1. ref 的作用 2. 如何使用 1. ref 的作用 用于注冊模板引用 用在普通DOM標簽上&#xff0c;獲取的是DOM節點。 用在組件標簽上&#xff0c;獲取的是組件的實例對象。 2. 如何使用 代碼如下 <template><div class"app"><h2 ref"titl…

手寫MVVM框架-實現簡單的數據代理

MVVM框架最顯著的特點就是虛擬dom和響應式的數據、我們以Vue為例&#xff0c;分別實現data、computed、created、methods以及虛擬dom。 這一章我們先實現簡單的響應式&#xff0c;修改數據之后在控制臺打印。 我們將該框架命名為MiniVue。 首先我們需要創建MiniVue的類(src/co…

Redis命令:列表模糊刪除詳解

前言 在Redis中&#xff0c;列表&#xff08;List&#xff09;是一種非常常用的數據結構&#xff0c;允許存儲多個有序的元素。然而&#xff0c;在實際應用中&#xff0c;可能會遇到需要刪除列表中符合某種模式的元素的需求。本文將詳細介紹如何在Redis中實現列表的模糊刪除。…

spy-debugger + Charles 調試移動端/內嵌小程序H5

簡介說明&#xff1a; PC端可以用F12進行console等進行調試&#xff0c;但移動端App中使用webview就無法進行實時調試&#xff0c;針對這種情況 1. 安裝 全局安裝 spy-debugger sudo npm install spy-debugger -g // window不用加sudo2. spy-debugger 證書 其實spy-debugg…

【目標檢測】模型驗證:K-Fold 交叉驗證

K-Fold 交叉驗證 1、引言1.1 K 折交叉驗證概述 2、配置2.1 數據集2.2 安裝包 3、 實戰3.1 生成物體檢測數據集的特征向量3.2 K 折數據集拆分3.3 保存記錄3.4 使用 K 折數據分割訓練YOLO 4、總結 1、引言 我們將利用YOLO 檢測格式和關鍵的Python 庫&#xff08;如 sklearn、pan…

Android studio ternimal 中gradle 指令失效(gradle環境變量未配置)

默認gradle路徑&#xff1a;C:\Users\ylwj.gradle\wrapper\dists\gradle-8.10.2-bin\a04bxjujx95o3nb99gddekhwo\gradle-8.10.2\bin 環境變量-系統環境變量-雙擊path-配置上即可-注意重啟studio才會生效

Axure大屏可視化動態交互設計:解鎖數據魅力,引領決策新風尚

可視化組件/模板預覽&#xff1a;https://8dge09.axshare.com 一、大屏可視化技術概覽 在數據驅動決策的時代&#xff0c;大屏可視化技術憑借直觀、動態的展示方式&#xff0c;已成為眾多行業提升管理效率和優化決策過程的關鍵工具。它能夠將復雜的數據轉化為易于理解的圖形和…

Resnet 改進:嘗試在不同位置加入Transform模塊

目錄 1. TransformerBlock 2. resnet 3. 替換部分卷積層 4. 在特定位置插入Transformer模塊 5. 使用Transformer全局特征提取器 6. 其他 Tips:融入模塊后的網絡經過測試,可以直接使用,設置好輸入和輸出的圖片維度即可 1. TransformerBlock TransformerBlock是Transfo…

PromptSource和LangChain哪個更好

目錄 1. 設計目標與定位 PromptSource LangChain 2. 功能對比 3. 優缺點分析 PromptSource LangChain 4. 如何選擇&#xff1f; 5. 總結 PromptSource 和 LangChain 是兩個在自然語言處理&#xff08;NLP&#xff09;領域非常有用的工具&#xff0c;但它們的設計目標和…