当前位置:网站首页>二、第二章变量

二、第二章变量

2022-08-11 10:04:00 彬 瑞


提示:此为本菜鸟学习笔记,学习交流加845369955:

二、变量

不论是使用哪种高级程序语言编写程序,变量都是其程序的基本组成单位;
变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房 间,而通过变量名可以访问到变量(值)。

2.1 变量使用的基本步骤

方法一:

  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); 
	} 
}

2.2 变量使用注意事项

1、变量表示内存中的一个存储区域[不同的变量,类型不同,占用的空间大小不同,比如: int 4个字节,double 就是8个字节,先有基本印象,后面说字节]
2、该区域有自己的名称[变量名]和类型[数据类型]
3、变量必须先声明,后使用,即有顺序
4、该区域的数据/值可以在同一类型范围内不断变化5.变量在同一个作用域内不能重名
6、变量三要素:变量=变量名+值+数据类型

2.3 程序中 + 号的使用

1.当左右两边都是数值型时,则做加法运算
2.当左右两边有一方为字符串,则做拼接运算
3.运算顺序,是从左到右

//下面代码输出什么?
System.out.println(100+ 98); // 198
System.out.println("100" + 98); // 10098
System.out.println(100+3+"hello"); // 103hello
System.out.println("hello" +100 + 3);  // hello1003

2.4 数据类型

每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间(字节)。
在这里插入图片描述

2.5 整数类型

2.5.1基本介绍
Java 的整数类型就是用于存放整数值的,比如 12 , 30, 3456 等等

// 案例演示: 
byte n1 = 10; 
short n2 = 10; 
int n3 = 10; //4 个字节 
long n4 = 10; //8 个字节

2.5.2 整型的类型
在这里插入图片描述

注意:

  1. Java各整数类型有固定的范围和字段长度,不受具体OS[操作系统]的影响,以保证java程序的可移植性。
  2. Java的整型常量(具体值)默认为int型,声明long型常量须后加1或L
  3. java程序中变量常声明为int型,除非不足以表示大数,才使用long
  4. bit:计算机中的最小存储单位。byte:计算机中基本存储单元,1byte = 8 bit.
    byte n1 = 3; short n2 =3;

2.6 浮点类型

2.6.1 基本介绍
Java 的浮点类型可以表示一个小数,比如 123.4 ,7.8 ,0.12 等等
2.6.2 浮点型的分类
在这里插入图片描述

  1. 浮点数在机器中存放形式: 浮点数=符号位+指数位+尾数位
  2. 尾数部分可能丢失,造成精度损失(小数都是近似值)。

2.6.3 注意点
1.与整数类型类似,Java浮点类型也有固定的范围和字段长度,不受具体OS的影响。[float 4个字节double是8个字节]
2. Java的浮点型常量(具体值)默认为double型,声明float型常量,须后加’f’或‘F’
3.浮点型常量有两种表示形式
十进制数形式:如: 5.12512.0f.512(必须有小数点)
科学计数法形式:如:5.12e2 [5.12*10的2次方】5.12E-2 [5.12/10的2X万]
4. 通常情况下,应该使用double型,因为它比float型更精确。

浮点数使用陷阱: 2.7 和 8.1/3 比较
[当我们需要对小数的运算结果做出判断时,需小心精度问题]

//正确的使用应该是:两小数的差判断是否在某一精度区间内
if((math.abs(number1-number2)<0.0001){
    
	...
}

2.7 Java API 文档

  1. API (Application Programming Interface,应用程序编程接口)是Java 提供的基本编程接口(java提供的类还有相关的方法)。中文在线档.
  2. Java语言提供了大量的基础类,因此 Oracle公司也为这些基础类提供了相应的API文档,用于告诉开发者如何使用这些类,以及这些类里包含的方法。
  3. Java类的组织形式
    在这里插入图片描述

2.8 字符类型(char)

2.8.1 基本介绍
字符类型可以表示单个字符,字符类型是 char,char 是两个字节(可以存放汉字),多个字符我们用字符串 String

//演示 
char c1 = 'a'; 
char c2 = '\t'; 
char c3 = '韩'; 
char c4 = 97;

2.8.2 字符类型使用细节
1.字符常量是用单引号(‘’)括起来的单个字符。例如:
char c1 = ‘a’; char c2 =‘中; char c3 = ‘9";
2.Java中还允许使用转义字符/来将其后的字符转变为特殊字符型常量。例如:char c3 =‘\n’; 【’\n’表示换行符】
3.在java中,char的本质是一个整数,在输出时,是unicode码对应的字符。
4.可以直接给char赋一个整数,然后输出时,会按照对应的unicode字符输出[97-》a]
5. char类型是可以进行运算的,相当于一个整数,因为它都对应有Unicode码.

public class CharDetail {
     
	//编写一个 main 方法 
	public static void main(String[] args) {
     
		//在 java 中,char 的本质是一个整数,在默认输出时,是 unicode 码对应的字符 
		//要输出对应的数字,可以(int)字符 
		char c1 = 97; 
		System.out.println(c1); // a char c2 = 'a'; 
		//输出'a' 对应的 数字 
		System.out.println((int)c2); 
		char c3 = '韩';
		System.out.println((int)c3);//38889 
		char c4 = 38889; 
		System.out.println(c4);//韩
		//char 类型是可以进行运算的,相当于一个整数,因为它都对应有 Unicode 码. 
		System.out.println('a' + 10);//107
	}
}

1.字符型本质:
字符型存储:'a' ==> 码值97 ==> 二进制(110 0001) ==> 存储
字符读取:二进制(110 0001) ==> 97 ==> 'a' ==> 显示
2.字符和码值的对应关系是通过字符编码表决定的(是规定好) 。
ASCII (ASCIl编码表一个字节表示,一个128个字符,实际上一个字节可以表示256个字符,只用128个)Unicode(Unicode编码表固定大小的编码使用两个字节来表示字符,字母和汉字统一都是占用两个字节这样浪费空间)utf-8(编码表,大小可变的编码字母使用1个字节,汉字使用3个字节)gbk(可以表示汉字,而且范围广,字母使用1个字节,汉字2字节)gb2312(可以表示汉字,gb2312< gbk) big5码(繁体中文,台湾,香港)

2.9 各种编码简介

2.9.1 ASCII 码

  1. ASCII码:上个世纪60年代美国制定的一套字符编码,对英语字符与二进制位之间关系做统一规定,一共规定了128个字符。
  2. 缺点:不能表示所有字符。

2.9.2 Unicode 编码

  1. Unicode的好处:一种编码,将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,使用 Unicode没有乱码的问题。
  2. Unicode的缺点:一个英文字母和一个汉字都占用2个字节,这对于存储空间来说是浪费。
  3. 2的16次方是 65536,所以最多编码是65536个字符。
  4. 编码0-127的字符是与ASCII的编码一样. Unicode码兼容 ASCII码.

2.9.3 UTF-8 编码

  1. UTF-8是在互联网上使用最广的一种Unicode的实现方式(改进)
  2. UTF-8是一种变长的编码方式。它可以使用1-6个字节表示一个符号,根据不同的符号而变化字节长度。
  3. 使用大小可变的编码字母占1个字节,汉字占3个字节

2.10 布尔类型:boolean

1.布尔类型也叫boolean类型,booolean类型数据只允许取值true和false,无null
2. boolean类型占1个字节。
3. boolean类型适于逻辑运算,一般用于程序流程控制:
if条件控制语句;
while循环控制语句;
do-while循环控制语句;
for循环控制语句。

public class Boolean01 {
     
	//编写一个 main 方法 
	public static void main(String[] args) {
     
		//演示判断成绩是否通过的案例 
		boolean isPass = true;// 定义一个布尔变量
		if(isPass == true) {
     
			System.out.println("考试通过,恭喜");
		} else {
     
			System.out.println("考试没有通过,下次努力"); 
		} 
	}
}

2.11 基本数据类型转换

自动类型转换
在这里插入图片描述

1.有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。
2.当我们把精度(容量)大的数据类型赋值给精度(容量)小的数据类型时,就会报错,反之就会进行自动类型转换。
3. byte, shortchar之间不会相互自动转换。
4. byte,short, char他们三者可以计算,在计算时首先转换为int类型。
5. boolean不参与转换
6. 自动提升原则:表达式结果的类型自动提升为操作数中最大的类型

public class AutoConvertDetail {
     
	public static void main(String[] args) {
     
		//细节 1: 有多种类型的数据混合运算时, 系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算 
		int n1 = 10; //ok 
		float d1 = n1 + 1.1;//错误 n1 + 1.1 => 结果类型是 double
		double d1 = n1 + 1.1;//对 n1 + 1.1 => 结果类型是 double 
		float d1 = n1 + 1.1F;//对 n1 + 1.1 => 结果类型是 float 
		
		//细节 2: 当我们把精度(容量)大 的数据类型赋值给精度(容量)小 的数据类型时,就会报错,反之就会进行自动类型转换。 
		int n2 = 1.1;//错误 double -> int 
		
		//细节 3: (byte, short) 和 char 之间不会相互自动转换 //当把具体数赋给 byte 时,(1)先判断该数是否在 byte 范围内,如果是就可以
		byte b1 = 10; //对 , -128-127 
		int n2 = 1; //n2 是 int 
		byte b2 = n2; //错误,原因: 如果是变量赋值,判断类型 
		char c1 = b1; //错误, 原因 byte 不能自动转成 char 
		
		//细节 4: byte,short,char 他们三者可以计算,在计算时首先转换为int 类型 
		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
		boolean pass = true; //boolean 不参与转换 
		int num100 = pass;// boolean 不参与类型的自动转换
		
		//自动提升原则: 表达式结果的类型自动提升为 操作数中最大的类型 
		//看一道题 
		byte b4 = 1; 
		short s3 = 100; 
		int num200 = 1; 
		float num300 = 1.1F; 
		double num500 = b4 + s3 + num200 + num300; //float -> double 
	}
}

强制类型转换
自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符 ( ),但可能造成 精度降低或溢出,格外要注意

int i =(int)1.9;
System.out. print1n(i);

int j=100;
byte b1 = (byte)j;
System.out.print1n(b1);

  1. 当进行数据的大小从大 —> 小,就需要使用到强制转换
  2. 强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级
  3. char类型可以保存int的常量值,但不能保存int的变量值,需要强转
  4. byte和short, char类型在进行运算时,当做int类型处理。

2.12 基本数据类型和 String 类型的转换

在程序开发中,我们经常需要将基本数据类型转成String类型。或者将String类型转成基本数据类型。
2.12.1 基本类型转String类型
语法:将基本类型的值+""即可
2.12.2 String类型转基本数据类型
语法:通过基本类型的包装类调用parseXX方法即可

public class StringToBasic {
     
	public static void main(String[] args) {
    
		//基本数据类型->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.println(s1 + " " + s2 + " " + s3 + " " + s4);
		//String->对应的基本数据类型 
		String s5 = "123"; 
		//会在 OOP 讲对象和方法的时候回详细 
		//解读 使用 基本数据类型对应的包装类,的相应方法,得到基本数据类型
		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);
		
		//怎么把字符串转成字符 char -> 含义是指 把字符串的第一个字符得到 
		//解读 s5.charAt(0) 得到 s5 字符串的第一个字符 '1' 
		System.out.println(s5.charAt(0));
	}
}
  1. 在将 String 类型转成 基本数据类型时,要确保String类型能够转成有效的数据 ,比如 我们可以把 “123” , 转成一 个整数,但是不能把 “hello” 转成一个整数;
  2. 如果格式不正确,就会抛出异常,程序就会终止;

2.13 练习

1.使用char类型,分别保存\n \t r l1 123等字符,并打印输出
2.编程,保存两本书名,用+拼接,看效果。保存两个性别,用加号拼接,看效果
保存两本书价格,用加号拼接,看效果
3.编程实现如下效果
姓名 年龄 成绩 性别 爱好
XX   XX  Xx   XX  xX
要求:
	1)用变量将姓名、年龄、成绩、性别、爱好存储
	2)使用+
	3)添加适当的注释
	4)添加转义字符,使用一条语句输出

原网站

版权声明
本文为[彬 瑞]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_44232390/article/details/126090495