跳转至

第三章 变量(P035-P062)

1、变量的介绍

  • 变量的三个基本要素

类型+名称+值

2、程序中 + 号的使用

  1. 两边都是数值型时,进行加法运算
  2. 一边为字符串时,进行拼接运算

3、数据类型

  • Java数据类型

  1. 基本数据类型
  1. 数值型
  1. 整数类型,存放整数

类 字节 范围

byte[字节] 1 -128~127

short[短整型] 2 -32768~32767 (-215 - 215-1)

int[整型] 4 -2147483648~2147483647 (-231 - 231-1)

long[长整型] 8 -263~263-1

  1. 浮点(小数)类型

float[单精度] 4

double[双精度] 8

说明:

  1. 关于浮点数在机器中存放形式的简单说明,浮点数 = 符号位 + 指数位 + 尾数位
  2. 尾数部分可能丢失,造成精度损失(小数都是近似值)
  1. 字符型(char[2]),存放单个字符 'a'

  2. 布尔型(boolean[1]),存放true,false

  1. 引用数据类型
  1. 类(class)
  2. 接口(interface)
  3. 数组[]

1、整形的使用细节


  1. Java各整数类型有固定的范围和字段长度,不受具体OS[操作系统]的影响,以保证Java程序的可移植性

  2. Java的整型常量(具体值)默认为int型,声名long型常量须后加 ’l’ 或 ‘L’

例:int a = 3;

​ int b = 3l;(错误)

​ long b = 3l;(正确)

  1. Java程序中变量常声名为int型,除非不足以表示大数,才使用long

  2. bit:计算机中最小的存储单位,byte:计算机中基本存储单元,1 byte = 8 bit.

2、浮点数细节


  1. 与整数 1,2相似。

  2. 浮点数使用陷阱

  1. 2.7 和 8.1 / 3 比较

double num1 = 2.7; ---输出---> 2.7

double num2 = 8.1 / 3; ---输出--->2.66666667(一个接近2.7的一个小数而不是2.7

当我们==对运算结果==是小数的进行相等判断时,要小心

判断时,应该是以两个数的差值的绝对值,在某个精度范围内判断

例: Math.abs(num1) - (num2) < 0.000001

  • Java API 文档


  1. API (Application Programming Interface,应用程序编程接口) 是 Java 提供的基本编程接口 (Java提供的类还有相关方法)。中文在线文档:https://www.matools.com

  2. java语言提供了大量的基础类,因此 Oracle公司也为这些基础类提供了相应的API文档,用于告诉开发者如何使用这些类,以及这些类里面包含的方法。

  3. Java类的组织形式

image-20221222131736417

3、字符类型(char)


字符类型可以表示单个字符,字符类型是char,char是两个字节(可以存放一个汉字),多个字符我们用字符串String。

说明:字符类型可以直接存放一个数字。(对照ASCII码输出

  • 字符类型使用细节

  1. 字符常量是用 ( ' ' )括起来的单个字符。

  2. Java中还允许使用转义字符 '\' 来将其后的字符转变为特殊字符型常量。

  3. 在Java中,char的 本质是一个整数,在输出时,是Unicode码对应的字符。

要输出对应的数字时要 (int) 转换为 int 类型。

https://tool.chinaz.com/tools/unicode.aspx

  1. char类型是可以进行运算的,相当于一个整数,因为它都对应有Unicode码

ASCII 编码表 一个字节表示,一个128个字符,实际上一个字节可以表示256个字符,只用了128个

4、布尔类型:boolean


  • 基本介绍
  1. 布尔类型也叫boolean类型,boolean类型数据只允许取值 true 和 false ,无 null .

  2. boolean 类型只占 1 个字节

  3. 适用于逻辑运算

if 条件控制语句

while 循环控制语句

do - while 循环控制语句

for 循环控制语句

  • 使用细节

不可以用 0 或 非0 的整数替代 false 和 true,这点和C语言不同

4、基本数据类型转换

自动转换:当Java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型。

数据类型按精度(容量)大小排序为:

char ----> int ----> long ----> float ----> double

byte ----> short ----> int ----> long ----> float ----> double

1、自动类型转换注意和细节


  1. 有多种类型的数据混合运算时,系统首先自动将所有数据转换成当中容量最大的那种数据类型,然后进行计算。

  2. 当我们把精度(容量)最大的数据类型赋值给精度(容量)小的数据类型时,就会报错,反之就会进行自动类型转换。

  3. ( byte,short) 和 char 之间不会相互自动转换

  4. byte,short,char 它们三者可以计算,在计算时首先转换为 int 类型。

不管是某种单独还是混合,都会转为 int 类型。

  1. boolean 不参与转换

  2. 自动提升原则:表达式结果的类型自动提升为操作数中最大的类型。

2、强制类型转换


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

  • 1.细节说明

  1. 当进行数据的大小从 大--->小,就需要使用到强制转换

  2. 强制符号只针对与最近的操作数有效,往往会使用小括号提升优先级

  3. char 类型可以保存 int 的常量值,但不能保存 int 的变量值,需要强转

int m = 100 ; char c3 = (char)m;

  1. byte 和 short 类型在进行运算时,当作int类型处理。

3、基本数据类型和String类型的转换


  1. 基本数据类型===》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 + " ";
  1. String -> 对应的基本数据类型

使用 基本数据类型对应的包装类的相应方法,得到基本数据类型

String s5 = "123";
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 num6 = Boolean.parseBoolean(s5);
short num7 = Short.parseShort(s5);
//字符类型char
System.out.println(s5.charAt(0));
  1. 注意事项
  1. 在将String 类型转成基本数据类型时,要确保String类型能够转成有效的数据,比如 我们可以把“123”,转成一个整数,但是不能把“hello”转成一个整数。
  2. 如果格式不正确,就会抛出异常,程序就会终止,这个问题在异常处理章节中,会处理