首页 > 编程语言 > 详细

Java学习08-变量

时间:2021-05-10 20:29:46      阅读:36      评论:0      收藏:0      [点我收藏+]

变量

1. 变量的概念

  • 内存中的一个存储区域
  • 该区域的数据可以在同一类型范围内不断变化
  • 变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值

示例代码

/*
变量的使用
1. java定义变量的格式:数据类型 变量名 = 变量值;

2. 说明:
	① 变量必须先声明,后使用
	② 变量都定义在其作用域内。在作用域内,它是有效的,换句话说,出了作用域,就失效了
	③ 同一个作用域内,不可以声明两个同名的变量
*/

class VariableTest
{
	public static void main(String[] args){
		// 变量的定义
		int myAge = 12;
		// 变量的使用
		System.out.println(myAge);
		
		// 编译错误:使用myNumber之前未定义过myNumber
		// System.out.println(myNumber);

		// 变量的声明
		int myNumber;
		
		// 编译错误:使用myNumber之前未赋值过myNumber
		// System.out.println(myNumber);

		// 变量的赋值
		myNumber = 1001;
		
		// 编译不通过
		// System.out.println(myClass);

		// 不可以在同一个作用域内定义同名的变量
		// int myAge = 22;


		System.out.println(myNumber);
	}
	public void method(){
		int myClass = 1;
	}
}

2. 变量的分类

2.1 变量按照数据类型来分:

? 基本数据类型:

? 整型:byte \ short \ int \ long

? 浮点型:float \ double

? 字符型:char

? 布尔型:boolean

? 引用数据类型:

? 类(class)

? 接口(interface)

? 数组(array)

2.2 变量按照在类中声明的位置来分:

? 成员变量 vs 局部变量

示例代码:

/*
Java定义的数据类型

一、变量按照数据类型来分:

	基本数据类型:
		整型:byte \ short \ int \ long
		浮点型:float \ double 
		字符型:char
		布尔型:boolean
	
	引用数据类型:
		类(class)
		接口(interface)
		数组(array)

二、变量按照在类中声明的位置来分:
		成员变量	vs	  局部变量


*/
class VariableTest1 {
	public static void main(String[] args) {
		// 1. 整型:byte(1字节=8bit) \ short(2字节) \ int(4字节) \ long(8字节)
		// ① byte范围: -128 ~ 127
		byte b1 = 12;
		byte b2 = -128;
		// b2= 128; // 编译不通过
		System.out.println(b1);
		System.out.println(b2);
		// ② 声明long型变量,必须以"l"或"L"结尾
		// ③ 通常,定义整型变量时,使用int型。
		short s1 = 128;
		int i1 = 1234;
		long l1 = 3414234324L;
		System.out.println(l1);

		// 2. 浮点型:float(4字节) \ double(8字节)
		// ① 浮点型,表示带小数点的数值
		// ② float表示数值的范围比long还大

		double d1 = 123.3;
		System.out.println(d1 + 1);
		// ③ 定义float类型变量时,变量要以"f"或"F"结尾
		float f1 = 12.3F;
		System.out.println(f1);
		// ④ 通常,定义浮点型变量时,使用double型。
		

		// 3. 字符型:char (1字符=2字节)
		// ① 定义char型变量,通常使用一对‘‘,内部只能写一个字符
		char c1 = ‘a‘;
		// 编译不通过
		// c1 = ‘AB‘;
		System.out.println(c1);

		char c2 = ‘1‘;
		char c3 = ‘中‘;
		char c4 = ‘£‘;
		System.out.println(c2);
		System.out.println(c3);
		System.out.println(c4);

		// ② 表示方式:1. 声明一个字符 2. 转义字符 3. 直接使用Unicode值来表示字符型常量
		char c5 = ‘\n‘; // 换行符
		c5 = ‘\t‘; // 制表符
		System.out.print("hello" + c5);
		System.out.println("world");

		char c6 = ‘\u0043‘;
		System.out.println(c6);

		// 4. 布尔型:Boolean
		// ① 只能取两个值之一:true、false
		// ② 常常在条件判断、循环结构中使用
		boolean bb1 = true;
		System.out.println(bb1);

		boolean isMaried = true;
		if(isMaried){
			System.out.println("你就不能参加\"单身\"party了!\\n很遗憾");
		}else{
			System.out.println("你可以多谈谈女朋友!");
		}

	}
}

运行结果:

技术分享图片


3. 基本数据类型转换

前提:这里讨论只是7种基本数据类型变量间的运算。不包含boolean类型的变量。

3.1 自动类型提升

结论:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。
byte、char、short --> int --> long --> float --> double

特别的:当byte、char、short三种类型的变量做运算时,结果为int型

说明:此时的容量大小指的是,表示数的范围的大和小,并不是指内存大小。比如:float容量要大于long的容量

示例代码:

/*
基本数据类型之间的运算规则:

前提:这里讨论只是7种基本数据类型变量间的运算。不包含boolean类型的变量。

1. 自动类型提升:
	结论:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。
	byte、char、short --> int --> long --> float --> double

	特别的:当byte、char、short三种类型的变量做运算时,结果为int型

2. 强制类型转换:见下小结

说明:此时的容量大小指的是,表示数的范围的大和小,并不是指内存大小。比如:float容量要大于long的容量
*/
class VariableTest2 {
	public static void main(String[] args) {
		
		byte b1 = 2;
		int i1 = 129;
		// 编译不通过
		// byte b2 = b1 + i1;
		int i2 = b1 + i1;
		long l1 = b1 + i1;
		System.out.println(i2);

		float f = b1 + i1;
		System.out.println(f);

		short s1 = 123;
		double d1 = s1;
		System.out.println(d1);  // 123.0


		//***************特别的********************
		char c1 = ‘a‘;  // 97
		int i3 = 10;
		int i4 = c1 + i3;
		System.out.println(i4);

		short s2 = 10;
		//char c2 = c1 + s2;  // 编译不通过

		byte b2 = 10;
		//char c3 = c1 + b2;  // 编译不通过

		//short s3 = b2 + s2;  // 编译不通过

		//short s4 = b1 + b2;  // 编译不通过
		//*****************************************
	}
}

运行结果:

技术分享图片


3.2 强制类型转换

强制类型转换:自动类型提升运算的逆运算。

  1. 需要使用强转符: ()
  2. 注意点:强制类型转换,可能导致精度损失。

示例代码:

/*
强制类型转换:自动类型提升运算的逆运算。
1. 需要使用强转符: ()
2. 注意点:强制类型转换,可能导致精度损失。
*/

class VariableTest3 {
	public static void main(String[] args) {
		
		double d1 = 12.3;
		
		// 精度损失举例1
		int i1 = (int)d1;	// 截断操作
		System.out.println(i1);
	
		// 没有精度损失
		long l1 = 123;
		short s2 = (short)l1;

		// 精度损失举例2
		int i2 = 128;
		byte b = (byte)i2;
		System.out.println(b);	// -128
	}
}

运行结果:

技术分享图片


3.3 两个特殊情况

class VariableTest4 {
	public static void main(String[] args) {
		
		// 1. 编码情况1:
		long l = 123213;
		System.out.println(l);
		// 编译失败:过大的整数
		// long l1 = 213324235234123;
		long l1 = 213324235234123L;


		//*********************
		// 编译失败
		// float f1 = 12.3;
		float f1 = 12.3f;
		// 2. 编码情况2:
		// 整型常量,默认类型为int型
		// 浮点型常量,默认类型为double型
		byte b = 12;
		// byte b1 = b + 1;		// 编译失败

		// float f1 = b + 12.3;	// 编译失败
	}
}

4. String类型变量的使用

String类型变量的使用

  1. String属于引用数据类型,翻译为:字符串
  2. 声明String类型变量时,使用一对""
  3. String可以和8种基本数据类型变量做运算,且运算只能是连接运算:+
  4. 运算的结果仍然是String类型

示例代码:

/*
String类型变量的使用
1. String属于引用数据类型,翻译为:字符串
2. 声明String类型变量时,使用一对""
3. String可以和8种基本数据类型变量做运算,且运算只能是连接运算:+
4. 运算的结果仍然是String类型

*/
class StringTest {
	public static void main(String[] args) {

		String s1 = "Hello World!";

		System.out.println(s1);

		String s2 = "a";
		String s3 = "";

		//char c = ‘‘; // 编译不通过,char型‘‘里面有且只能放一个字符,多了或少了都不可以


		//*************************************************
		int number = 1001;
		String numberStr = "学号:";
		String info = numberStr + number;	// +:连接运算
		boolean b1 = true;
		String info1 = info + b1;	// +:连接运算
		System.out.println(info1);


		//*************************************************
		// 练习1
		char c = ‘a‘;	// a:97		A:65
		int num = 10;
		String str = "hello";
		System.out.println(c + num + str);	// 107hello
		System.out.println(c + str + num);	// ahello10
		System.out.println(c + (num + str));// a10hello 
		System.out.println((c + num) + str);// 107hello
		System.out.println(str + num + c);	// hello10a

		// 练习2
		// 输出如下形状
		// *	*	
		System.out.println("*	*");
		System.out.println(‘*‘ + ‘\t‘ + ‘*‘);	// 93
		System.out.println(‘*‘ + "\t" + ‘*‘);	// *	*	
		System.out.println(‘*‘ + ‘\t‘ + "*");	// 51*
		System.out.println(‘*‘ + (‘\t‘ + "*"));	// *	*	


		//*************************************************
		
		//String str1 = 123;	// 编译不通过
		String str1 = 123 + "";
		System.out.println(str1); // "123"

		//int num1 = str1;	// 编译不通过
		//int num1 = (int)str1;	// 编译不通过

		int num1 = Integer.parseInt(str1);
		System.out.println(num1);	// 123

	}
}

运行结果:

技术分享图片


5. 计算机中不同进制的使用说明

对于整数,有四种表示方式:

二进制(binary): 0,1,满2进1.以0b或0B开头。
十进制 (decimal):0-9,满10进1。
八进制(octal):0-7,满8进1. 以数字0开头表示。
十六进制(hex):0-9及A-F,满16进1. 以0x或0X开头表示。此处的A-F不区分大小写
如:0x21AF + 1 = 0X21B0

  1. 计算机底层的存储方式:

所有数字在计算机底层都以二进制形式存在。

  1. 二进制数据的存储方式:

    所有的数值,不管正负,底层都以补码的方式存储。

  2. 原码、反码、补码的说明:

    • 正数:三码合一
    • 负数:
      • 负数的原码:直接将一个数值换成二进制数。最高位是符号位。
      • 负数的反码:是对原码按位取反,只是最高位(符号位)确定为1。
      • 负数的补码:其反码加1。
  3. 进制的转换(了解)

    技术分享图片

Java学习08-变量

原文:https://www.cnblogs.com/brianxq/p/14751471.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!