变量
一个数据存储空间的表示
不同数据存入具有不同内存地址的空间,相互独立,内存地址不好记,通过变量名可以简单快速地找到数据。
变量命名规则
- 包含数字、字母、下划线、$
- 不能以数字开头,不能是纯数字
- 英文命名,要有意义
- 帕斯克命名法(驼峰命名法)
- 大骆驼:HelloWorld 首字母大写,一般用于类名
- 小骆驼:userName 首字母小写,用于变量命名
- 使用下划线:user_name
- 不能使用关键字和保留字给变量和类命名
变量声明及使用
1、声明变量,根据数据类型在内存申请空间
//数据类型 变量名;
int money;
2、赋值,即“将数据存储至对应的内存空间”(可与第一步合并)
//变量名 = 数值;
money = 1000;
3、使用变量,即“取出数据使用”
//数据类型 变量名 = 数值;
int money = 1000;
Scanner 的使用
// 导入Scanner类
import java.util.*;
// 创建Scanner对象
Scanner input = new Scanner(System.in);
// 获得键盘输入的数据
int now = input.nextInt();
常量
使用final 进行修饰
// final 数据类型 变量名 = 值
final int NUMBER = 12;
在程序运行过程中常量的值不可改变,常量名一般使用全大写
数据类型
分类
- 基本数据类型 ( 栈 )
- 引用数据类型 ( 堆,比如String)
基本数据类型 | 内存占用 | 数据范围 | |
---|---|---|---|
整型 | byte | 1字节8位 | -128~127 |
short | 2字节16位 | -32768 (-2^15) ~ + 32767 (+2^15-1) | |
int(默认) | 4字节32位 | -2147483648(-2^31) ~ + 2147483647(2^31-1) | |
long | 8字节64位 | -2^63 ~ + 2^63-1 | |
浮点型 | float | 4字节32位 | 1.4E-45 ~ 3.4E+38 , -1.4E-45 ~ -3.4E+38 |
double(默认) | 8字节64位 | 4.9E-324 ~ 1.7E+308, -4.9E-324 ~ -1.7E+308 | |
字符型 | char | 2 | 0-65535 |
布尔型 | boolean | 1 | true false |
8位 = 1字节(byte) 1024字节 = 1KB(千字节) 1024KB = 1MB(兆字节)
float money = 13.5f;
float money = 13.5F;
long l = 1234567890123l;
long l = 1234567890123L;
类型转换
自动类型转换(小转大,类型范围小的变量直接赋值给类型范围大的变量)
- 小范围的类型会自动转换成大范围的类型运算
- 最终结果类型由表达式中的最高类型决定
- byte short char 是直接转换成 int 类型参与运算的
强制类型转换(大转小,强行将类型范围大的变量、数据赋值给类型范围小的变量)
需要在转换的值前添加目标类型
数据类型 变量2 = (数据类型)变量1、数据
int a = 20;
byte b = (byte)a;
System.out.println(b); // 20
/*
00000000 00000000 00000000 00010100 a(32位)
00010100 b(8位)*/
int i = 1500;
byte j = (byte)i;
System.out.println(j); // -36
/*
00000000 00000000 00000101 11011100 i(32位)
11011100 j(8位)*/
注意:
- 强制类型转换可能造成数据(丢失)溢出
- 浮点型强转成整型,直接丢掉小数部分,保留整数部分返回
运算符
赋值运算符
=
算术运算符
基本运算符:+、-、*、/、%、++、--
复合运算符:+=、-=、*=、/=、%=
关系运算符
==、!=、>、<、>=、<= (返回Boolean类型)
逻辑运算符
&&:短路与,两个操作数都是true,结果才是true
||:短路或,两个操作数一个是true,结果就是true
!:非,操作数为true,结果为false 操作数为false,结果为true
三目运算符
语法:条件 ? 结果1 : 结果2
注意
- 算术运算符:两个整数做除法,其结果一定是整数,因为最高类型是整数。
- 自增自减运算符:在变量前,先进行变量增减,再使用变量;在变量后,先使用变量,再进行变量自增减。
- 复合运算符:自带强制类型转换。例:
a += b => a = (a的类型)(a + b)
- 逻辑运算符:&&一个为false、结果是false,但前一个为false,后一个条件不执行了;||一个为true、结果是true,但前一个为true,后一个条件不执行了(运算效率更高 开发中更常用)
运算符优先级
-
( ) 优先级最高,可以通过 ( ) 控制表达式的运算顺序,提高可读性
-
单目运算符包括 ! ++ --,优先级别高
-
优先级别最低的是赋值运算符:=
-
从右向左结合性的只有赋值运算符、三目运算符和单目运算符
-
!> 算术运算符 > 关系运算符 > 逻辑运算符( && > ||)