Java入門-Java學習路線課程第二課:變量與數據類型

本博客地址 | GitHub | 更多資源免費下載

JavaSE變量與數據類型


變量:就是一個數據儲存空間的表示

怎麼快速地找到數據?如圖


變量圖:

變量的聲明和賦值

在線畫圖工具,點擊註冊即可使用(推薦使用)


變量的使用步驟:

  • 第一步: 聲明變量,根據數據類型在內存申請空間

    • 如:int num;
  • 第二步:賦值,即“將數據存儲至對應的內存空間”

    • 如: num=10;

​  注意: 第一步和第二步可以合併爲: 聲明賦值 int num=10;

  • 第三步:使用變量,即“取出數據使用”

變量的規則:

  • 字下美人數駱駝
  • 不能用關鍵字: 如: public class int double

java常用的數據類型:

  • 八大基本數據類型: char byte short int long float double boolean

  • 引用數據類型: 數組 類(String) 接口

  • 數值 : byte short int long float double

  • 非數值: boolean String char


數據類型說明

在這裏插入圖片描述

數據類型的取值範圍,很不容易記,但用思維記憶方式就很給力,該類型的位數減1就是2的次方數

  • case:int 的位數是32,那麼它的取值範圍爲(-232-1~~232-1-1),即該類型的取值範圍。
  • 如圖:
    在這裏插入圖片描述

“字節” 和 “位” 的小知識:

  • 例如: int 爲 4 個字節 32 位
“1位”表示爲 1 bit
“1個字節”表示爲 1 Byte
“1個字節”=“8位” 即 1 Bytes=8 bit
因此“4個字節”=4*8位=32位
此外,字母使用1個字節(即8位)進行表示和存儲,而一個漢字則使用兩個字節(即16位,請看後面說明)進行表示和存儲。
說明:
一個漢字佔用的存儲空間大小取決於使用的編碼,一個漢字佔2字節,是在說國內的中文編碼標準GB2312、GBK、BG18030。

變量的使用案例演示

package org.gyun.test;

/**
 * 輸出變量名
 * 
 * @author DongGaoYun
 * 
 */
public class variableTest {

	/**
	 * 主方法 實現需求:
	 */
	public static void main(String[] args) {
	//使用變量分二步:
		// 1.聲明賦值
		String name = "張卓";
		String sex = "男";
		char sex1 = '女';
		double score = 98.5;
		// 2.使用變量
		System.out.println("輸出Java課考試最高分:" + score);
		System.out.println("輸出最高分學員姓名:" + name);
		System.out.println("輸出最高分學員性別:" + sex1);
	}
}	

java中float和double的取值範圍是什麼?(瞭解)

一、兩者的取值範圍如下:

1、float:

最小值:Float.MIN_VALUE=1.4E-45 (2的-149次方)。

最大值:Float.MAX_VALUE=3.4028235E38 (2的128次方-1)。

2、double:

最小值:Double.MIN_VALUE=4.9E-324 (2的-1074次方)。

最大值:Double.MAX_VALUE=1.7976931348623157E308 (2的1024次方-1)。

二、IEEE754不是一個具體值,是IEEE二進位浮點數算術標準(IEEE Standard for Floating-Point Arithmetic)的標準編號,它規定了浮點數在計算機當中的存儲方式以及算術標準等。

(一)IEEE754的規定:

1、單精度浮點數字長32位,尾數長度23,指數長度8,指數偏移量127;雙精度浮點數字長64位,尾數長度52,指數長度11,指數偏移量1023。

2、約定小數點左邊隱含有一位,通常這位數是1,所以上述單精度尾數長度實際爲24(默認省略小數點左邊的1則爲23),雙精度尾數長度實際爲53(默認省略小數點左邊的1則問53)。

(二)IEEE754有三部分組成:

符號位、指數位、尾數位。三種精度的浮點數各個部分位數如下:

img

擴展資料:

IEEE754標準的特殊值:

標準規定了一些特殊值(零,無窮,非數字)的存儲方式 :

1、如果 指數 是0 並且 小數部分 是0, 這個數±0 (和符號位相關,這就是上文說的原因) 。

2、如果 指數 = 2^e - 1並且 小數部分 是0, 這個數是 ±無窮大 (同樣和符號位相關) 。

3、如果 指數 = 2^e - 1並且 小數部分 非0, 這個數表示爲不是一個數(NaN)。

具體如下:

img


練習

在這裏插入圖片描述


設置個人的文檔註釋

  • 設置個人文檔註釋的步驟:

在這裏插入圖片描述


  • 註釋信息:

/**

  • @Description:描述信息
  • @Author:DongGaoYun
  • @Date:${date} ${time}
  • */

變量和常量的應用演示案例1:

package org.gyun.type_variable;

/**
 * @ClassName:FinalVariable.java
 * @Description:使用變量和常量
 * @Author:DongGaoYun
 * @URL: www.gyun.org
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-8-29 上午9:54:29
 * @Version:1.0
 */
public class FinalVariable {

	/**
	 * 主方法
	 */
	public static void main(String[] args) {
		//variableTest();
		//常量
		// 1.聲明賦值
		//變量 字下美人數駱駝
		final String NAME_DONG_GAO_YUN = "董老師";
        // 2.使用
		System.out.println(NAME_DONG_GAO_YUN);
		
	}

	private static void variableTest() {
		// 變量
		// 1.聲明賦值
		int num = 10;
		// 2.使用
		System.out.println(num);
	}

}

變量和常量的應用演示案例2:

package org.gyun.test;

/**
 * @ClassName:Test5.java
 * @Description:常量用法
 * @Author:DongGaoYun 
 * @URL: www.gyun.org
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-9-3 下午2:13:58
 * @Version:1.0
 */
public class Test5 {
	//主方法
	public static void main(String[] args) {
		//常量有什麼規則
	/*
	 * 1.常量名都是大寫
	 * 2.多個單詞之間用下劃線。DONG_GAO_YUN
	 * 3.final關鍵字
	 * 4.還能賦值嗎?不能 final:最終的
	 */
		final int I=1;
		//I=2;
		System.out.println(I);
	}
}

設置項目編碼:

在這裏插入圖片描述


設置全局編碼:

如圖設置全局編碼
如圖說明設置

  • Scanner對象 最好使用GBK

Scanner對象的使用

在這裏插入圖片描述


Scanner演示案例1:

package org.gyun.scanner;

import java.util.*;

/**
 * @ClassName:ScannerTest.java
 * @Description:Scanner的應用
 * @Author:DongGaoYun
 * @URL: www.gyun.org
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-8-29 上午10:11:00
 * @Version:1.0
 */
public class ScannerTest {

	/**
	 * 分析需求: 1. 導入包 2.聲明(創建)對象 3.使用
	 */
	public static void main(String[] args) {
		// 使用Scanner 1.導包 2.創建對象 3.使用
		Scanner input = new Scanner(System.in);
		System.out.println("請輸入一個數字: ");
		int num = input.nextInt();
		System.out.println("請輸入您的姓名: ");
		String name=input.next();
		// 打印
		System.out.println("輸入的數字爲: " + num);
		System.out.println("輸入的姓名爲: " + name);
	}
}


Scanner演示案例2:

package org.gyun.test;

import java.util.Scanner;

/**
 * @ClassName:Test2.java
 * @Description:Scanner的應用
 * @Author:DongGaoYun
 * @URL: www.gyun.org
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-9-2 下午4:57:36
 * @Version:1.0
 */
public class Test2 {
	// 主方法,完成需求:
	// 分析需求:輸入字符串用Scanner對象,輸出用System.out.println("")打印
	// 1.引包
	public static void main(String[] args) {
		// 2.創建對象
		Scanner input = new Scanner(System.in);
		System.out.println("請輸入一個字符串:");
		// 打印一行字符串
		String str = input.nextLine();
		// 使用對象
		System.out.println("輸入的字符串爲:" + str);
	}
}


自動轉換的規則:

在這裏插入圖片描述


自動轉換演示案例1:

package org.gyun.scanner;

import java.util.*;

/**
 * @ClassName:ScannerTest.java
 * @Description:Scanner的應用
 * @Author:DongGaoYun
 * @URL: www.gyun.org
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-8-29 上午10:11:00
 * @Version:1.0
 */
//@SuppressWarnings("all")
public class ScannerTest {

	/**
	 * 分析需求: 1. 導入包 2.聲明(創建)對象 3.使用
	 */
	public static void main(String[] args) {
		//scannerTest();
		//自動轉換有兩個條件:
		//1.都是數據類型,可以相互兼容
		//2.目標類型必須大於等於源類型
		
		int a=10;
		short b=(short) a;//強轉
		double c=a;//自動轉換
		
	}
	

	private static void scannerTest() {
		// 使用Scanner 1.導包 2.創建對象 3.使用
		Scanner input = new Scanner(System.in);
		System.out.println("請輸入您的姓名: ");
		String names=input.nextLine();
		System.out.println("請輸入您的姓名: ");
		String name=input.next();
		System.out.println("請輸入一個數字: ");
		int num= input.nextInt();
		// 打印
		System.out.println("輸入的數字爲: " + num);
		System.out.println("輸入的姓名爲: " + name);
		System.out.println("輸入的姓名爲: " + names);
	}
}


自動轉換演示案例2:

package org.gyun.test;
/**
 * 
 * @ClassName:Test1.java
 * @Description:測試float double的區別
 * @Author:DongGaoYun 
 * @URL: www.gyun.org
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-9-2 下午4:39:32
 * @Version:1.0
 */
public class Test1 {
	//主方法
	public static void main(String[] args) {
		//float和long使用時要注意加相應的字母。如float要加f,long要加l
		float f=2.23f;
		double d=2.23;
		int num=23;
		long l=23l;
		short s=90;
		//自動轉換:
		short s2=10;
		int i2=s2;
		//強轉
		byte b2=(byte) s2;
		int i3=10;
		double d3=i3;
		//自動轉換有兩個條件:
		//1.都是數據類型,可以相互兼容
		//2.目標類型必須大於等於源類型,否則強轉
		i3=(int) d3;
	}
}


案例沒有強轉,會報錯:

在這裏插入圖片描述

  • bug原因:

    • 目標類型小於源類型
  • 自動轉換有兩個條件:

    • 都是數據類型,可以相互兼容
    • 目標類型必須大於等於源類型

賦值運算符

在這裏插入圖片描述

  • “=” java賦值號

兩個數據的交換演示案例1:

package org.gyun.num;

/**
 * @ClassName:NumTest.java
 * @Description:兩個數據的交換
 * @Author:DongGaoYun
 * @URL: www.gyun.org
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-8-29 上午11:22:41
 * @Version:1.0
 */
public class NumTest {

	/**
	 * 主方法 分析需求: 
	 * 1.已知條件num1=6; num2=8;源
	 * 2.交換成num1=8; num2=6; 
	 * 目標 我怎麼去做?
	 * 學會借力:借一個容器 
	 * 3.聲明 num3=0; 賦值運算符 num3=num1; //num3=6 num1=num2; //num1=8
	 * num2=num3; //num2=6;
	 * 
	 */
	public static void main(String[] args) {
		// 聲明賦值
		int num1 = 6;
		int num2 = 8;
		// 聲明臨時容器
		int temp = 0;
		// 使用
		temp = num1; // num3=6
		num1 = num2; // num1=8
		num2 = temp; // num2=6;
		//打印
		System.out.println("num1=" + num1);
		System.out.println("num2=" + num2);
	}
}

兩個數據的交換演示案例2:

package org.gyun.test;

/**
 * @ClassName:Test3.java
 * @Description:兩個整數的互換
 * @Author:DongGaoYun 
 * @URL: www.gyun.org
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-9-2 下午5:11:51
 * @Version:1.0
 * 實現需求分析:
 *  已知條件:1.int num1=1;  2.int num2=2;
 *  得到結果: 1.int num1=2;  2.int num2=1;
 * 	生活中怎麼交換兩個容器的東東
 *  通常借力:第三個容器
 * 	把其中的一個容器A的東東放到第三個容器C裏,
 *  然後再把另外一個容器B的東東放在容器A裏,
 *  再次把容器C的東東放在容器B裏。
 *  最後達成互換。
 * 
 * 
 */
public class Test3 {

	/**
	 *完成需求:
	 */
	public static void main(String[] args) {
		//聲明變量
		int num1=1;
		int num2=2;
		System.out.println("互換之前的打印:int num1="+num1+"---int num2="+num2);
		//數據的互換
		//藉助第三個變量
		int temp;
		//具體做法:
		temp=num1;
		num1=num2;
		num2=temp;
		System.out.println("————————————————————————");
		System.out.println("互換之後的打印:int num1="+num1+"---int num2="+num2);
	}
}


算術運算符

在這裏插入圖片描述


/ % ++ --算術運算的演示案例1:

package org.gyun.num;

/**
 * @ClassName:Test3.java
 * @Description:使用/ % ++ --的應用
 * @Author:DongGaoYun 
 * @URL: www.gyun.org
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-8-29 上午11:35:48
 * @Version:1.0
 */
public class Test3 {
	//主方法
	// ++ 自身加1
	// -- 自身減1
	
	//++i 自身先加1,再賦值
	//i++ 先賦值,再加1;
	
	//--i 自身先減1,再賦值
	//i-- 先賦值,再減1;
	
	public static void main(String[] args) {
		// "/"
		//取整數的商 //2
		int num1=5/2;
		System.out.println(num1);
		// "%"
		//取整數的餘
		int num2=5%2;
		//打印需求:
		System.out.println(num2); //1
		System.out.println(++num2);//2
		System.out.println(num2++);//3
		System.out.println(num2--);//3 2
		System.out.println(num2--);//2 1
		//   1      2         2     3
		num1=num2++ +num2++ +--num2+ ++num2;
		System.out.println(num1);
        //作業
		//num1= --num1+num2+++++num2+--num2+++num1;
	}
}



/ % ++ – + - *算術運算的演示案例2:

package org.gyun.demo;

/**
 * @ClassName:Demo1.java
 * @Description:算術運算符
 * @Author:DongGaoYun
 * @URL: www.gyun.org
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-9-3 下午2:20:04
 * @Version:1.0
 */
public class Demo1 {
	// / % ++ -- + - *
	// 如果不在主方法裏聲明變量,那麼全局變量必須加static(瞭解)
	public static void main(String[] args) {
		int i = 1;
		int count = 0;
		count += i;// 等價於:count=count+i;
		count *= i;// 等價於:count=count*i;
		count -= i;// 等價於:count=count-i;
		// 面試題
		short s1 = 1; // s1=1
		short s2 = 2; // s2=2
		// s2= s1 + s2; //兩個short值相加有可能超出short的最大範圍32767,所以會報錯
		// short的最大取值範圍:
		System.out.println(Short.MAX_VALUE);//32767
		s2 += s1;// 等價於: s2=s2+s1; 但jvm幫你優化了右邊的表達式 s2+s1=3;所以正確 //s1=1 s2=3
		// ++ --
		// ++ 自增1
		// -- 自減1
		// 分析:
		// i++ 先賦值,再自身加1
		// i-- 先賦值,再自身減1
		// ++i 自身加1,再賦值
		// --i 自身減1,再賦值
		// s1=1 s2=3
		s1++; // 2
		s2++; // 4
		System.out.println(s1++); // 2 1 1 2 1 //s1=2; 2
		System.out.println(s2++); // 4 3 3 3 3 //s2=4; 4
		System.out.println(s1--); // 1 1 2 0 2 3
		System.out.println(s2--); // 3 3 4 1 4 5
		// s1=2 s2=4;
		System.out.println(s1-- + s2++ + --s1 + ++s2 + ++s1);
		//                  2   +   4       0     6      1
		// s1--+s2+++--s1+++s2-++s1 //課後作業
	}
}

求四位會員卡號之和演示案例:

package org.gyun.scanner;

import java.util.Scanner;

/**
 * @ClassName:ScannerCardTest.java
 * @Description 求四位會員卡號之和
 * @Author:DongGaoYun 
 * @URL: www.gyun.org
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-8-29 下午12:06:51
 * @Version:1.0
 */
public class ScannerCardTest {

	/**
	 * 主方法
	 * 分析需求:
	 * 	1. 技術點:Scanner對象 算術運算符 / %  賦值運算符 = 打印
	 *   2. 變量名: ones 個位 tens 十位 hundreds 百位 thousands 千位
	 * 	3.  細化:Scanner 1.導包 2. 創建對象 3. 使用    
	 * 
	 */
	public static void main(String[] args) {
		//輸入四位會員卡號:
		//Scanner 1.導包 2. 創建對象 3. 使用  
		Scanner input =new Scanner(System.in);
		System.out.println("請輸入四位會員卡號: ");
		int card = input.nextInt();
		//得到個位:
		int ones=card%10;
		System.out.println("個位的數爲:"+ones);
		//得到十位:
		int tens=card/10%10;
		System.out.println("十位的數爲:"+tens);
		//得到百位:
		int hundreds=card/100%10;
		System.out.println("百位的數爲:"+hundreds);
		//得到百位:
		int thousands=card/1000;
		System.out.println("千位的數爲:"+thousands);
		System.out.println("四位的會員卡號之和爲: "+(ones+tens+hundreds+thousands));
	}

}


關係運算符

在這裏插入圖片描述


邏輯運算符

在這裏插入圖片描述


邏輯運算符演示案例:

package org.gyun.scanner;

/**
 * @ClassName:TestAnd_Or.java
 * @Description:邏輯運算符 && || !
 * @Author:DongGaoYun
 * @URL: www.gyun.org
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-8-29 下午12:23:13
 * @Version:1.0
 * 
 *   && 短路與(且)  左邊的爲true 纔去看右邊 否則不用看右邊  左邊和右邊同時成立,結果纔是true
 *   || 短路或    左邊爲true 右邊就不用看了,只要有一邊是true,結果就是true !
 *   取非  是true取非,結果就是false 是false取非,結果就是true
 */
public class TestAnd_Or {
	public static void main(String[] args) {
		// 聲明賦值
		int num = 5;
		int num1 = 6;
		int num2 = 7;
		String str = "李自成";
		// "!" 取非
		if (!str.equals("李自成")) {
			System.out.println(1);
		} else {
			System.out.println(2);
		}
		// "&&" 短路與(且)
		if (num > num1 && num2 > num1) {
			System.out.println(num2);
		} else {
			System.out.println(num1);
		}
		// "||" 短路或 
		if (num > num1 || num2 > num1) {
			System.out.println(num2);
		} else {
			System.out.println(num1);
		}
	}
}

思考題

在這裏插入圖片描述


條件(三目)運算符

在這裏插入圖片描述


條件(三目)運算符演示案例:

package org.gyun.test;

import java.util.*;

/**
 * @ClassName:CardTest6.java
 * @Description:求中獎
 * @Author:DongGaoYun
 * @URL: www.gyun.org
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-9-3 下午3:25:03
 * @Version:1.0
 */
public class CardTest6 {

	/**
	 * 主方法 分析需求: 求四位會員卡號之和大於20,即中獎 1. 技術點:Scanner對象 算術運算符 / %  賦值運算符 = 打印 關係運算符
	 * 條件運算符   2. 變量名: ones 個位 tens 十位 hundreds 百位 thousands 千位 3.
	 *  細化:Scanner 1.導包 2. 創建對象 3. 使用  
	 * 
	 */
	public static void main(String[] args) {
		// Scanner 三步走:引包 創建對象 使用
		Scanner input = new Scanner(System.in);
		// 打印
		System.out.print("請輸入四位會員卡號:");
		int card = input.nextInt();
		System.out.println("您輸入四位會員卡號爲:" + card);
		// 個位
		int ones = card % 10; // 4567
		System.out.println(ones);
		// 十位
		int tens = card / 10 % 10; // 4567
		System.out.println(tens);
		// 百位
		int hundreds = card / 100 % 10; // 4567
		System.out.println(hundreds);
		// 百位
		int thousands = card / 1000; // 4567
		System.out.println(thousands);
		int sum = ones + tens + hundreds + thousands;
		// 關係運算符
		/*
		 * if(sum>20){ System.out.println("恭喜你!中獎了!"); }
		 */
		// 三目運算符
		String str = sum > 20 ? "恭喜你!中獎了!" : "沒有中獎";
		System.out.println(str);
	}
}

經驗:

在這裏插入圖片描述


練習:

在這裏插入圖片描述


———— 精 選 文 章 ————
  1. Java入門-Java學習路線課程第一課:初識JAVA
  2. Java入門-Java學習路線課程第三課:選擇結構
  3. Java入門-Java學習路線課程第四課:循環結構
  4. Java入門-Java學習路線課程第五課:一維數組
  5. Java入門-Java學習路線課程第六課:二維數組
  6. Java入門-Java學習路線課程第七課:類和對象
  7. Java入門-Java學習路線課程第八課:方法和方法重載
  8. Java入門-Java學習路線擴展課程:equals的使用
  9. Java入門-Java學習路線課程面試篇:取商 / 和取餘(模) % 符號的使用
  10. Java進階-Java學習路線課程第一課:Java集合框架-ArrayList和LinkedList的使用
  11. Java進階-Java學習路線課程第二課:Java集合框架-HashSet的使用及去重原理
  12. JavaWEB-Java學習路線課程:使用MyEclipse工具新建第一個JavaWeb項目(一)
  13. JavaWEB-Java學習路線課程:使用MyEclipse工具新建項目時配置Tomcat服務器的方式(二)
  14. Spring框架-Java學習路線課程第一課:Spring核心
  15. Spring框架-Java學習路線課程:Spring的擴展配置
  16. Springboot框架-Java學習路線課程:Springboot框架的搭建之maven的配置
  17. java學習:在給學生演示用Myeclipse10.7.1工具生成War時,意外報錯:SECURITY: INTEGRITY CHECK ERROR
  18. 使用jquery發送Ajax請求的幾種異步刷新方式
  19. idea Springboot啓動時內嵌tomcat報錯- An incompatible version [1.1.33] of the APR based Apache Tomcat Native
  20. 一個簡單的SSM框架Demo(登錄(包含攔截器)和註銷

更多免費資源請關注微信公衆號:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章