第二章 变量和数据类型
第二章 变量和数据类型1、变量(1)内存地址;通过变量名可以简单快速地找到数据(2)变量命名规则(3)帕斯克命名法2、Java常用数据类型3、八大数据类型说明4、变量声明及使用5、常数(其值不能改变)6、Scanner的使用7、数据转换类型(1)隐式类型转换(自动转换)(2)自动类型转换规则(3)强制类型转换规则4、赋值运算符5、运算符6、关系运算符7、逻辑运算符8、条件运算符9、三元运算符10、运算符优先级
1、变量
变量:一个数据存储空间的表示;
不同数据存入具有不同内存地址的空间,相互独立
(1)内存地址;通过变量名可以简单快速地找到数据
房间=变量 房间名字=变量名 房间类型=变量类型 入住的客人=变量值
(2)变量命名规则
字、下、美、人、数、骆驼有意义(下划线最实用)
不能使用关键字,如public、class(红色;是关键字Java本身已使用的)
保留字(灰色;是Java准备用但还没有使用的关键字)
(3)帕斯克命名法
大骆驼:类名 如:ShopUser
小骆驼:变量,方法 如:showUser
2、Java常用数据类型
数据类型:数值:整型、浮点型。
非数值
3、八大数据类型说明
(1)byte:
类型大小: 1字节(8位)。 取值范围: -128 到 127。 用途: 用于节省空间存储较小的整数。 (2)short:
类型大小: 2字节(16位)。 取值范围: -32,768 到 32,767。 用途: 同样用于存储整数,占用空间比byte大,适用于需要比byte更大范围的场景。 (3)int:
类型大小: 4字节(32位)。 取值范围: 大约 -2^31 到 2^31-1,即-2,147,483,648 到 2,147,483,647。 用途: 最常用的整数类型,适用于大多数整数计算。 (4)long:
类型大小: 8字节(64位)。 取值范围: 大约 -2^63 到 2^63-1。 用途: 当需要存储非常大的整数时使用。 (5)float:
类型大小: 4字节(32位)。 精度: 单精度浮点数,大约6-7位有效数字。 用途: 用于存储带有小数部分的数值,适合不需要很高精度的场合。 (6)double:
类型大小: 8字节(64位)。 精度: 双精度浮点数,大约15-16位有效数字。 用途: 提供更高的精度,是处理浮点数的默认选择。 (7)char:
类型大小: 2字节(16位)。 取值范围: Unicode字符集的一个码位,通常是0到65,535。 用途: 用于存储单个字符,支持Unicode字符集。 (8)boolean:
类型大小: 不固定,通常实现为1位,但具体大小取决于虚拟机实现。 取值: true 或 false。 用途: 表示逻辑上的真或假,用于条件判断。
public static void main(String[ ] args){ //八大数据类型 int i = 0;//整型 byte b = 0;//字节类型 short s = 0;//短整型 long l = 20L;//长整型,数字后面需要加L float f = 3.33F;//单精度浮点型,数字后面需要加F double d = 33.33;//双精度浮点型 char c = '男';//字符类型 boolean bool = true;//布尔类型 false假 true真 //引用数据类型 String str="asda12314564";//字符串类型,String开头要大写 }
4、变量声明及使用
第一步:声明变量,根据数据类型在内存申请空间
int money; //数据类型 变量名;
第二步:赋值,即“将数据存储至对应的内存空间”
money = 1000 ; //变量名 = 数值;
第一步和第二步可以合并
int money = 1000; 数据类型 变量名=数值;
第三步:使用变量,即“取出数据使用”
5、常数(其值不能改变)
优点:比较安全推荐做法:
(1)常量名通常大写
(2)不同字符使用下划线分隔
(3)只能被赋值一次,通常定义时即对其初始化
//关键字final定义常量 final int NUM = 10; final double PI = 3.14; int r = 2; double area = PI * r * r;
6、Scanner的使用
第一步:导入Scanner类
import java.util.*;
第二步:创建Scanner对象
Scanner input = new Scanner(System.in);
第三步:获得键盘输入的数据
int now = input.nextInt();
7、数据转换类型
(1)隐式类型转换(自动转换)
int num1 = 2; double num2 = num1;
(2)自动类型转换规则
规则1:如果一个操作数为double型,则整个表达式可提升为double型
规则2:满足自动类型转换的条件
两种类型要兼容
数值类型(整型和浮点型)互相兼容
目标类型大于源类型:
例如:double 型大于 int 型
(3)强制类型转换规则
int b = (int)10.2; double a = 10; int c = (int)a;//a被强制转换为int
4、赋值运算符
如何借助变量以及赋值运算符实现两个数据的交换?
int num1=8; int num2=9; //实现交换 int num3=num1;//先把1号放到3号 num1=num2;//再把2号放到1号 num2=num3;//最后3号放到2号
5、运算符
基本的算术运算
+、-、*、/、%、++、--
复合算术运算符
+=、-=、*=、/=、%=
6、关系运算符
运算符 | 含义 | 范例 | 结果 |
---|---|---|---|
== | 等于 | 5==6 | false |
!= | 不等于 | 5!=6 | true |
> | 大于 | 5>6 | false |
< | 小于 | 5<6 | true |
>= | 大于等于 | 5>=6 | false |
<= | 小于等于 | 5<=6 | true |
=为赋值运算符,==为等于运算符
关系表达式的结果为布尔值
、<、>=、<= 运算符的优先级别高于==、!=
、<、>=、<=运算符只支持数值类型的数据比较
7、逻辑运算符
运算符 | 含义 | 运算规则 |
---|---|---|
&& | 短路与 | 两个操作数都是true,结果才是true |
|| | 短路或 | 两个操作数一个是true,结果就是true |
! | 非 | 操作数为true,结果为false |
! | 非 | 操作数为false,结果为true |
如果第一个操作数已经能确定表达式的值,第二个操作数就不必计算了;优先级别 ! > && > ||
int x=8; int y=9; System.out.println((++x==y)&&(++x!=y)); System.out.println(x);//true 10 int x=8; int y=9; System.out.println( (++x!=y)&&(++x==y)); System.out.println(x);//true 9
8、条件运算符![](https://i-blog.csdnimg.cn/direct/24d486b1e28f45ffb9d583ff4d3d4fcf.png)
int min; min = 5 < 7 ? 5 : 7;//5小于7是条件 结果是true输出表达式1 结果是false输出表达式2 System.out.println(min); min = 10 < 7 ? 10 : 7; System.out.println(min);
9、三元运算符
语法:条件?结果1:结果2
String name = (6==7?"666":"777")
10、运算符优先级
(1)单目运算符包括! ++ --,优先级别高
(2)优先级别最低的是赋值运算符
(3)可以通过()控制表达式的运算顺序,()优先级最高从右向左结合性的只有赋值运算符、三目运算符和单目运算
(4)符算术运算符 > 关系运算符 > 逻辑运算符