Java入门-Java学习路线课程第二课:变量与数据类型

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/atgfg/article/details/100141806

本博客地址 | 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 {
	// / % ++ -- + - *
	// 如果不在主方法里声明变量,那么全局变量必须加staic(了解)
	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. Spring框架-Java学习路线课程第一课:Spring核心
  9. java学习:在给学生演示用Myeclipse10.7.1工具生成War时,意外报错:SECURITY: INTEGRITY CHECK ERROR
  10. 使用jquery发送Ajax请求的几种异步刷新方式
  11. idea Springboot启动时内嵌tomcat报错- An incompatible version [1.1.33] of the APR based Apache Tomcat Native

更多免费资源请关注微信公众号:

猜你喜欢

转载自blog.csdn.net/atgfg/article/details/100141806