Java學習-第一部分-第一階段-第二節:變數

来源:https://www.cnblogs.com/wenjie2000/archive/2022/06/16/16378648.html
-Advertisement-
Play Games

變數 變數介紹 為什麼需要變數 變數是程式的基本組成單位 不論是使用哪種高級程式語言編寫程式,變數都是其程式的基本組成單位,比如: //變數有三個基本要素(類型+名稱+值) class Test{ public static void main(String []args){ int a=1;//定 ...


變數

變數介紹

為什麼需要變數

  • 變數是程式的基本組成單位

不論是使用哪種高級程式語言編寫程式,變數都是其程式的基本組成單位,比如:

//變數有三個基本要素(類型+名稱+值)

class Test{
    public static void main(String []args){
        int a=1;//定義了一個變數,類型int整型,名稱a,值1
        int b=3;//定義了一個變數,類型int整型,名稱b,值3
        b=89;//把89值賦給b變數
        System.out.println(a);//輸出a變數的值
        System.out.println(b);//輸出b變數的值
    }
}

變(變化)量(值)的介紹

概念
變數相當於記憶體中一個數據存儲空間的表示,你可以把變數看做是一個房間的門牌號,通過門牌號我們可以找到房間,而通過變數名可以訪問到變數(值)。
●變數使用的基本步驟

  1. 聲明變數
    int a;
  2. 賦值
    a = 60;//應該這麼說:把60賦給a
  3. 使用 System.out.println(a);

//也可以一步到位[int a = 60;通常我們是一步完成]

變數快速入門

變數使用入門案例
看演示並對代碼進行說明,演示記錄人的信息的代碼

public class Var02{
    //編寫一個main方法
    public static void main(string[] args) {
        //記錄人的信息
        int age = 30;
        double score = 88.9;
        char gender =‘男';
        string name = "king";//輸出信息,快捷鍵
        System.out. println(”人的信息如下:");
        System.out.println(name);
        System.out.println(age);
        System.out.println(score);
        System.out.println(gender);
    }
}

變數使用註意事項

  1. 變數表示記憶體中的一個存儲區域[不同的變數,類型不同,占用的空間大小不同,比如:int 4個位元組,double就是8個位元組]
  2. 該區域有自己的名稱[變數名]和類型[數據類型]
  3. 變數必須先聲明,後使用,即有順序
  4. 該區域的數據可以在同一類型範圍內不斷變化
  5. 變數在同一個作用域內不能重名
  6. 變數=變數名+值+數據類型,這一點請註意。變數三要素

+號的使用

  1. 當左右兩邊都是數值型時,則做加法運算

  2. 當左右兩邊有一方為字元串,則做拼接運算

  3. 運算順序從左到右

  4. 測試題1min

    下麵代碼輸出什麼?
    System.out.println(100 + 98);
    System.out.println("100" + 98);

    System.out.println(100+3 +"hello");
    System.out.println("hello" +100 +3);

    答案

    198
    10098
    103hello
    hello1003

數據類型

每一種數據都定義了明確的數據類型,在記憶體中分配了不同大小的記憶體空間(位元組)。

(boolean 值只有 true 和 false 兩種,這個數據類型只代表 1 bit 的信息,但是它的“大小”沒有嚴格的定義。也就是說,不管它占多大的空間,只有一個bit的信息是有意義的。)(在 Oracle 的 Java 虛擬機實現中,Java 語言中的 boolean 數組被編碼成 Java 虛擬機的 byte 數組,每個元素占 8 比特。參考:https://binkery.com/archives/346.html)

image

整數類型

整型的類型

類型 占用存儲空間 範圍
byte[位元組] 1位元組 -128 ~127
為啥存放的範圍是這個=>二進位(二進位我們詳解)
short[短整型] 2位元組 -(215)~215-1
-32768~32767
int[整型] 4字 -231 ~ 231-1
-2147483648 - 2147483647
long[長整型] 8位元組 -263 ~ 263-1

整型的使用細節

  1. Java各整數類型有固定的範圍和欄位長度,不受具體OS[操作系統]的影響,以保證java程式的可移植性。

  2. Java的整型常量(具體值)預設為int型,聲明long型常量須後加‘l’或'L'

  3. java程式中變數常聲明為int型,除非不足以表示大數,才使用long

  4. bit:電腦中的最小存儲單位。 byte:電腦中基本存儲單元, 1byte = 8 bit
    [二進位再詳細說,簡單舉例一個byte 3和short 3]

思考題:long類型,有幾個 bit
[8*8=64 bit]
long n = 3;//記憶體中

浮點類型

  • 基本介紹

    Java的浮點類型可以表示一個小數,比如123.4,7.8,0.12等等

浮點型的分類

類型 占用存儲空間 範圍
單精度float 4位元組 -3.403E38~3.403E38
雙精度double 8位元組 -1.798E308 ~ 1.798E308
  • 說明一下
    1.關於浮點數在機器中存放形式的簡單說明,浮點數=符號位+指數位+尾數位

    2.尾數部分可能丟失,造成精度損失(小數都是近似值)。

浮點型使用細節

  1. 與整數類型類似,Java浮點類型也有固定的範圍和欄位長麾,不受具體OS的影響。[float 4個位元組 double是8個位元組]

  2. Java的浮點型常量預設為double型,聲明float型常量,須後加f或‘F’

  3. 浮點型常量有兩種表示形式

    十進位數形式:如:5.12 512.0f .512(必須有小數點)

    科學計數法形式:如:5.12e2[5.12*102] 5.12E-2 [5.12*10-2]

  4. 通常情況下,應該使用double型,因為它比float型更精確。[舉例說明]
    double num9 =2.1234567851;
    float num10 = 2.1234567851F;

  5. 浮點數使用陷阱:2.7和8.1/3比較(浮點數做除法結果為近似值)(實際開發中當它們的差值的絕對值很小時視為相等)

    if(Math.abs(num1 - num2)<0.000001){
        System.out.println("差值非常小,到我的規定精度,認為相等...");
    }
    

Java API文檔

  1. API (Application Programming Interface,應用程式編程介面)是Java提供的基本編程介面(java提供的類還有相關的方法)。中文線上文檔:https://www.matools.com

  2. Java語言提供了大量的基礎類,因此 Oracle公司也為這些基礎類提供了相應的API文檔,用於告訴開發者如何使用這些類,以及這些類里包含的方法。

  3. Java類的組織形式 [圖]

    image

  4. 舉例說明如何使用

    按:包->類->方法
    直接搜索。(Math)

字元類型(char)

基本介紹
字元類型可以表示單個字元,字元類型是char, char是兩個位元組(可以存放漢字),多個字元我們用字元串String(我們後面詳細講解String)
案例演示

//演示char的基本使用
public class Chare1 {
    //編寫一個main方法
    public static void main(String[] args){
        char c1 = 'a';
        char c2 = '\t';
        char c3 = '韓';
        char c4 = 97;//說明:字元類型可以直接存放一個數字
        System.out.println(c1);//a
        System.out.println(c2);// 
        System.out.println(c3);//韓
        System.out.println(c4);//a
    }
}

代碼

char c1 = 'a';

char c2 ='\t';

char c3='韓';

char c4 =97:

字元類型使用細節

  1. 字元常量是用單引號( ‘ ’ )括起來的單個字元。例如:char c1 = 'a'; char c2 ='中‘; char c3 ='9';(不能使用雙引號,會報錯)

  2. Java中還允許使用轉義字元'\'來將其後的字元轉變為特殊字元型常量。例如:char c3 = n'; 'n'表示換行符

  3. 在java中,char的本質是一個整數,在輸出時,是unicode碼對應的字元。
    http://tool.chinaz.com/Tools/Unicode.aspx

  4. 可以直接給char賦一個整數,然後輸出時,會按照對應的unicode字元輸出[97]

  5. char類型是可以進行運算的,相當於一個整數,因為它都對應有Unicode碼.

public class CharDetail{
    //編寫一個main方法
    public static void main(String[] args) {
        //在java中,char的本質是一個整數,在輸出時,是unicode碼對應的字元char c1 = 97;
        System.out.println(c1); // a
        char c2 = 'a';//輸出'a’對應的數字
        System.out.println((int)c2);//92
        char c4 = 38889;
        System.out.println(c4);//韓
        //char類型是可以進行運算的,相當於一個整數,因為它都對應有Unicode
        System.out.println('a' + 10);//97+10=107
        
        //課堂小測試
        char c5 = 'b’ + 1;//98+1==> 99
        System.out.println((int)c5);//99
        System.out.println(c5);//99->對應的字元->編碼表
    }
}

字元類型本質探討

  1. 字元型存儲到電腦中,需要將字元對應的碼值(整數)找出來,比如'a'
    存儲:'a' ==> 碼值97 ==> 二進位 ==> 存儲
    讀取:二進位 ==> 97 ==> 'a' ==> 顯示
  2. 字元和碼值的對應關係是通過字元編碼表決定的(是規定好)

介紹一下字元編碼表

ASCIl(ASCII編碼表一個位元組表示,一個128個字元)(http://c.biancheng.net/c/ascii/)

Unicode (Unicode編碼表固定大小的編碼使用兩個位元組來表示字元,字母和漢字統一都是占用兩個位元組,這樣浪費空間)
utf-8(編碼表,大小可變的編碼。其中字母使用1個位元組,漢字使用3個位元組)

gbk(可以表示漢字,而且範圍廣,字母使用1個位元組,漢字2個位元組)

gb2312(可以表示漢字,gb2312<gbk)

big5碼(繁體中文,臺灣,香港)

布爾類型:boolean

基本介紹

  1. 布爾類型也叫boolean類型,booolean類型數據只允許取值true和false,無null

  2. boolean類型占1個位元組。

  3. boolean類型適於邏輯運算,一般用於程式流程式控制制[這個後面會詳細介紹]:

    if條件控制語句;
    while迴圈控制語句;

    do-while迴圈控制語句;

    for迴圈控制語句

案例演示

boolean pass = true;
if (pass){
    System.out.print1n("通過考試");
}else{
    System.out.print1n("沒有通過考試~");
}

基本數據類型轉換

自動類型轉換

介紹
當java程式在進行賦值或者運算時,精度小的類型自動轉換為精度大的數據類型,這個就是自動類型轉換。
數據類型按精度(容量)大小排序為(背,規則)

graph LR A(char) -->B(int)-->C(long)-->D(float)-->E(double) F(byte)-->G(short)-->B

看一個基本案例

int a = 'c";
double d = 80;

自動類型轉換註意和細節

  1. 有多種類型的數據混合運算時,系統首先自動將所有數據轉換成容量最大的那種數據類型,然後再進行計算。
  2. 當我們把精度(容量)大的數據類型賦值給精度(容量)小的數據類型時,就會報錯,反之就會進行自動類型轉換。
  3. (byte, short)和char之間不會相互自動轉換。
  4. byte,short,char他們三者可以計算,在計算時首先轉換為int類型。
  5. boolean不參與轉換
  6. 自動提升原則:表達式結果的類型自動提升為操作數中最大的類型
byte b2 = 1;
byte b3 = 2;short s1 = 1;
//short s2 = b2 + s1;//錯,b2 + s1 => int
int s2 = b2 + s1;//錯,b2 + s1 => int
byte b4 = b2 + b3;//b2 + b3 => int

強制類型轉換

介紹
自動類型轉換的逆過程,將容量大的數據類型轉換為容量小的數據類型。使用時要加上強制轉換符(),但可能造成精度降低或溢出,格外要註意。
案例演示

int i = (int)1.9;
System.out.println(i);//造成精度損失

int j =100;
byte b1 = (byte)j;
System.out.print1n(b1);//數據溢出

強制類型轉換細節說明

  1. 當進行數據的大小從大——>小,就需要使用到強制轉換

  2. 強轉符號只針對於最近的操作數有效,往往會使用小括弧提升優先順序

    //int x =(int)10*3.5+6*1.5;
    int y = (int)(10*3.5+6*1.5);
    System.out.println(y);
    
  3. char類型可以保存int的常量值,但不能保存int的變數值,需要強轉

    char c1 = 100;//v
    int m = 100;//v
    char c2 = m;//x
    char c3= (char)m;//v
    System.out.println(c3);//100對應的字元
    
  4. byte和short類型在進行運算時,當做int類型處理。

基本數據類型轉換-練習題

判斷是否能夠通過編譯

//1
short s= 12;
s= s-9;
x
//2 
byte b = 10;
b =b +11;
b =(byte)(b+11);

//3
char c = 'a';
int i= 16;
float d = .314F;
double result =c+i+d;

//4
byte b = 16;
short s=14;
short t =s + b;


答案:
----------------------------------------
1.錯
2.錯
3.對
4.錯

基本數據類型和String類型的轉換

介紹
在程式開發中,我們經常需要將基本數據類型轉成String類型。或者將String類型轉成基本數據類型。

  • 基本類型轉String類型

    語法:將基本類型的值+""即可

int n1 = 100;
fLoat f1 = 1.1F;
double d1 = 4.5;
boolean b1 = true;
String s1 = n1 +"";
String s2 = f1 +"";
String s3 = d1 +";
String s4 = b1 +"":
System.out.print1n(s1 + " " + s2 + " " +s3 + "" + s4);
  • String類型轉基本數據類型

    語法:通過基本類型的包裝類調用parseXX方法即可

//String->對應的基本數據類型
String s5 = "123";
//會在0OP講對象和方法的時候回詳細
int num1 = Integer.parseInt(s5);
double num2 = Double.parseDouble(s5);
float num3 = Float.parseFloat(s5);
long num4 = Long.parseLong(s5);
byte num5 = Byte.parseByte(s5);
booLean b = BooLean.parseBoolean("true");
short num6 = Short.parseShort(s5);

System.out.println(num1);//123
System.out.println(num2);//123.0
Sytem.out.println(num3);//123.0
System.out.println(num4);//123
System.out.println(num5);//123
System.out.println(num6);//123
System.out.println(b);//true

//怎麼把字元串轉成字元char ->含義是指把字元串的第一個字元得到
//解讀s5.charAt(0)得到s5字元串的第一個字元'1'
System.out.println(s5.charAt(0));

註意事項

  1. 在將String類型轉成基本數據類型時,要確保String類型能夠轉成有效的數據,比如我們可以把"123",轉成一個整數,但是不能把"hello"轉成一個整數。
  2. 如果格式不正確,就會拋出異常,程式就會終止,這個問題在異常處理章節中,會處理

本章練習

  1. 程式閱讀題,看看輸出什麼?

    public class Homework01 {
        public static void main(String]args){
            int n1;
            n1 = 13;
            int n2;
            n2 = 17;
            int n3;
            n3 = n1 +n2;
            System.out.println("n3 = " + n3);
            int n4 = 38;
            int n5 = n4 - n3;
            System.out.println("n5 = " + n5);
        }
    }
    /*
    n3 = 30
    n5 = 8
    */
    
  2. 使用char類型,分別保存\n \t \r \\ 1 2 3等字元,並列印輸出

    public class Homework02 {
        //編寫一個main方法
        public static void main(String[] args) {
        //使用char類型,分別保存\n \t \r\ \1 23等字元,並列印輸出
            char c1 = '\n';//換行
            char c2 = '\t';//製表位ctrl +d
            char c3 = '\r ';//回車
            char c4 = '\r';//輸出\
            char c5 = '1';//換行
            char c6 = '2 ';//換行
            char c7 = '3';//換行
            System.out.println(c1);
            System.out.println(c2);
            System.out.println(c3);
            System.out.println(c4);
            System.out.println(c5);
            System.out.println(c6);
            System.out.println(c7);
        }
    }
    
  3. 編程,保存兩本書名,用+拼接,看效果。保存兩個性別,用加號拼接,看效果。保存兩本書價格,用加號拼接,看效果。

    public class HomeworkO3 {i
        //編寫一個main方法
        public static void main(String[] args) {
        //編程,保存兩本書名,用+拼接,看效果。保存兩個性別,//用加號拼接,看效果。保存兩本書價格,用加號拼接,看效果
            String book1 ="天龍八部";
            String book2 ="笑傲江湖";
            System.out.println(book1 + book2);//天龍八部笑傲江湖
            
            //性別應該使用char保存
            char c1 =‘男';
            char c2 =‘女;
            System.out.println(c1 + c2);//得到男字元碼值+女字元碼值
            
            //保存兩本書價格
            double price1 = 123.56;
            double price2 = 100.11;
            System.out.println(price1 + price2);//就是123.56+100.11
        }
    }
    
  4. 編程實現如下效果:
    年齡 成績 性別 愛好
    XX XX XXX XXX
    要求:
    1)用變數將姓名、年齡、成績、性別、愛好存儲

    2)使用+
    3)添加適當的註釋
    4)添加轉義字元,使用一條語句輸出

    public class HomeworkO4 {i
        //編寫一個main方法
        public static void main(String[] args) {
            String name = "jack";
            int age = 20;
            double score = 80.9;
            char gender ='男';
            String hobby ="打籃球";//輸出了信息,可以使用換行
            System.out.println("姓名\t年齡\t成績\t性別t愛好\n" + name + "\t"
                               + age + “\t" + score + "\t" + gender + "\t" + hobby);
        }
    }
    

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1 前言 函數調用很好理解,即使剛學沒多久的朋友也知道函數調用是怎麼實現的,即調用一個已經封裝好的函數,實現某個特定的功能。 把一個或者多個功能通過函數的方式封裝起來,對外只提供一個簡單的函數介面,然後在其他地方調用即可 2 函數調用方式 函數調用難道還能怎麼調用?不就封裝好直接調用嗎??? 函數調 ...
  • 目錄 一.簡介 二.效果演示 三.源碼下載 四.猜你喜歡 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 基礎 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 轉場 零基礎 O ...
  • 一、Pycharm軟體簡介 產品簡介 PyCharm是一種Python IDE(Integrated Development Environment,集成開發環境),帶有一整套可以幫助用戶在使用Python語言開發時提高其效率的工具,比如調試、語法高亮、項目管理、代碼跳轉、智能提示、自動完成、單元測 ...
  • 一. 打包參數 1. * 的作用:在函數定義中,收集所有的位置參數到一個新的元組,並將這個元組賦值給變數args >>> def f(*args): print(args) >>> f() () >>> f(1) (1,) >>> f(1, 2, 3, 4) (1, 2, 3, 4) >>> 2. ...
  • 1、Date 1.1 Date實例化 Date date1 = new Date(); System.out.println(date1); //Thu Jun 16 19:18:56 CST 2022 1.2 獲取日期毫秒數 getTime() System.out.println(date1.g ...
  • 大家好!我們是阿裡云云效智能代碼天團!旨在用人工智慧解放各位開發者的生產力!或許你們關註過我們的話會知道,我們有一個超酷的產品它叫Alibaba Cloud AI Coding Assistant,小名兒叫Cosy。說起這代碼補全和代碼搜索那可是樣樣精通٩(˃̶͈̀௰˂̶͈́)و 我們不僅把文檔搬進 ...
  • 今天來點特別的~ 不僅把好看的視頻全部pa下來,咱們還要實現自動評論、點贊、關註三連~ 寶,你也可以順手給我個三連嗎?給你個摸摸大~ 抓包分析流程 我寫成了文檔,都在這個PDF裡面了,但是好像不能上傳,所以點一下大家自行下載吧! 點我獲取,提取密碼 qwer 開始代碼 獲取視頻的代碼 import ...
  • 大佬的理解->《深入理解Java中的String》 1、String 1.1 String 實例化 String str1 = "xxx"; String string1 = "hello KH96"; System.out.println(string1); //hello KH96 String ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...