Java 常量与变量
标识符
- 标识符可以由字母、数字、下划线
_
和美元符$
组成,且不能以数字开头 - 标识符完全区分大小写,即
void
是关键字,Void
是合法的标识符 - 标识符不能是 Java 关键字和保留字
- 标识符命名最好能见名知意
关键字
goto
、const
在 Java 中被定义为保留字,暂未使用
变量
- 变量是程序中数据的零时存放场所
- 变量的三元素:变量类型、变量名和变量值
变量的命名规则
- 满足标识符命名规则
- 符合驼峰法命名规范
- 尽量简短、见名知意
类的命名规则
- 满足 Pascal 命名规范
数据类型
数据类型介绍
整型的应用场景
- 整型主要用来存储整数,如:1,2,3等等。
- 按照存储数据的范围不同分为四种,分别是:byte、short、int、long,数据表示范围依次增大。
- byte类型主要对二进制数据进行存储,在文件输入输出流部分将会使用,用于二进制数据的传输。
- short类型在有的需求中会用到,比如:对于登录账号的状态表示,一般用0表示正常,1表示冻结,2表示已删除。这里的数值比较固定,值也比较小,可以使用short类型表示。
浮点型的应用场景
- 浮点类型表示小数,包括float和double两种类型,具体使用哪种数据类型,也是可以按照表示范围进行选择。但double类型使用相对较多。
- 浮点型因为其表示方式的原因,会产生精度丢失的问题,所以会结合BigDecimal类进行使用
基本数据类型
数据类型 | 说明 | 字节数 | 范围 |
---|---|---|---|
byte | 字节型 | 1 | -128~127 |
short | 短整型 | 2 | -32768~32767 |
int | 整型 | 4 | -2^31~2^31-1 |
long | 长整型 | 8 | -2^63~2^63 |
float | 单精度浮点型 | 4 | -3.40E+38~3.40E+38 |
double | 双精度浮点型 | 8 | -1.79E+308~1.79E+308 |
char | 字符型 | 2 | 0~65535 |
boolean | 布尔型 | 1 | true/false |
进制表示
- 八进制:以 0 开头,包括 0-7的数字
- 十六进制:以 0x或 0X 开头,包括数字 0-9,以及字母a-f 或 A-F
字面值
- 整形字面值
- Java 中有三种表示整数的方式:十进制、八进制、十六进制
- 浮点型字面值
- 浮点值字面值默认表示double 类型,也可以在值后面加 d 或者 D
- 如需表示float 类型,需要在字面值后面加 f 或 F
- 字符型字面值
- 字符型字面值用单引号内的单个字符表示
- 布尔字面值
- 布尔值只能定义为
true
false
- 布尔值只能定义为
- 字符串字面值
- 字符串不属于基本数据类型
- 双引号引起来的 0 个或多个字符
变量声明
- 格式:
变量类型 变量名;
int n;
声明整形变量 nlong count;
声明长整型变量 count
赋值
- 使用
=
运算符进行赋值 - 将
=
右边的值赋值给左边的变量 int n;n=3;
定义 int 型变量 n,将 3 赋值给变量 n
变量定义
- 可以在变量声明时给变量赋值:
int n = 3;
类型转换
- 类型转换分为自动类型转换和强制类型转换:
char ch = (char)65536;
- 自动类型转换也叫做隐式类型转换
常量
final int n = 5;
ASCII 码
- ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)
- 基于拉丁字母的一套电脑编码系统
- 主要用于显示现代英语和其他西欧语言
- 使用 7 位或 8 位二进制组合来表示128 种或 256 种可能的字符
ASCII 码对照表
Bin | Dec | Hex | 缩写/字符 | 解释 |
---|---|---|---|---|
00000000 | 0 | 00 | NUL(null) | 空字符 |
00000001 | 1 | 01 | SOH(start of headling) | 标题开始 |
00000010 | 2 | 02 | STX (start of text) | 正文开始 |
00000011 | 3 | 03 | ETX (end of text) | 正文结束 |
00000100 | 4 | 04 | EOT (end of transmission) | 传输结束 |
00000101 | 5 | 05 | ENQ (enquiry) | 请求 |
00000110 | 6 | 06 | ACK (acknowledge) | 收到通知 |
00000111 | 7 | 07 | BEL (bell) | 响铃 |
00001000 | 8 | 08 | BS (backspace) | 退格 |
00001001 | 9 | 09 | HT (horizontal tab) | 水平制表符 |
00001010 | 10 | 0A | LF (NL line feed, new line) | 换行键 |
00001011 | 11 | 0B | VT (vertical tab) | 垂直制表符 |
00001100 | 12 | 0C | FF (NP form feed, new page) | 换页键 |
00001101 | 13 | 0D | CR (carriage return) | 回车键 |
00001110 | 14 | 0E | SO (shift out) | 不用切换 |
00001111 | 15 | 0F | SI (shift in) | 启用切换 |
00010000 | 16 | 10 | DLE (data link escape) | 数据链路转义 |
00010001 | 17 | 11 | DC1 (device control 1) | 设备控制1 |
00010010 | 18 | 12 | DC2 (device control 2) | 设备控制2 |
00010011 | 19 | 13 | DC3 (device control 3) | 设备控制3 |
00010100 | 20 | 14 | DC4 (device control 4) | 设备控制4 |
00010101 | 21 | 15 | NAK (negative acknowledge) | 拒绝接收 |
00010110 | 22 | 16 | SYN (synchronous idle) | 同步空闲 |
00010111 | 23 | 17 | ETB (end of trans. block) | 传输块结束 |
00011000 | 24 | 18 | CAN (cancel) | 取消 |
00011001 | 25 | 19 | EM (end of medium) | 介质中断 |
00011010 | 26 | 1A | SUB (substitute) | 替补 |
00011011 | 27 | 1B | ESC (escape) | 溢出 |
00011100 | 28 | 1C | FS (file separator) | 文件分割符 |
00011101 | 29 | 1D | GS (group separator) | 分组符 |
00011110 | 30 | 1E | RS (record separator) | 记录分离符 |
00011111 | 31 | 1F | US (unit separator) | 单元分隔符 |
00100000 | 32 | 20 | (space) | 空格 |
00100001 | 33 | 21 | ! | |
00100010 | 34 | 22 | " | |
00100011 | 35 | 23 | # | |
00100100 | 36 | 24 | $ | |
00100101 | 37 | 25 | % | |
00100110 | 38 | 26 | & | |
00100111 | 39 | 27 | ' | |
00101000 | 40 | 28 | ( | |
00101001 | 41 | 29 | ) | |
00101010 | 42 | 2A | * | |
00101011 | 43 | 2B | + | |
00101100 | 44 | 2C | , | |
00101101 | 45 | 2D | - | |
00101110 | 46 | 2E | . | |
00101111 | 47 | 2F | / | |
00110000 | 48 | 30 | 0 | |
00110001 | 49 | 31 | 1 | |
00110010 | 50 | 32 | 2 | |
00110011 | 51 | 33 | 3 | |
00110100 | 52 | 34 | 4 | |
00110101 | 53 | 35 | 5 | |
00110110 | 54 | 36 | 6 | |
00110111 | 55 | 37 | 7 | |
00111000 | 56 | 38 | 8 | |
00111001 | 57 | 39 | 9 | |
00111010 | 58 | 3A | : | |
00111011 | 59 | 3B | ; | |
00111100 | 60 | 3C | < | |
00111101 | 61 | 3D | = | |
00111110 | 62 | 3E | > | |
00111111 | 63 | 3F | ? | |
01000000 | 64 | 40 | @ | |
01000001 | 65 | 41 | A | |
01000010 | 66 | 42 | B | |
01000011 | 67 | 43 | C | |
01000100 | 68 | 44 | D | |
01000101 | 69 | 45 | E | |
01000110 | 70 | 46 | F | |
01000111 | 71 | 47 | G | |
01001000 | 72 | 48 | H | |
01001001 | 73 | 49 | I | |
01001010 | 74 | 4A | J | |
01001011 | 75 | 4B | K | |
01001100 | 76 | 4C | L | |
01001101 | 77 | 4D | M | |
01001110 | 78 | 4E | N | |
01001111 | 79 | 4F | O | |
01010000 | 80 | 50 | P | |
01010001 | 81 | 51 | Q | |
01010010 | 82 | 52 | R | |
01010011 | 83 | 53 | S | |
01010100 | 84 | 54 | T | |
01010101 | 85 | 55 | U | |
01010110 | 86 | 56 | V | |
01010111 | 87 | 57 | W | |
01011000 | 88 | 58 | X | |
01011001 | 89 | 59 | Y | |
01011010 | 90 | 5A | Z | |
01011011 | 91 | 5B | [ | |
01011100 | 92 | 5C | \ | |
01011101 | 93 | 5D | ] | |
01011110 | 94 | 5E | ^ | |
01011111 | 95 | 5F | _ | |
01100000 | 96 | 60 | ` | |
01100001 | 97 | 61 | a | |
01100010 | 98 | 62 | b | |
01100011 | 99 | 63 | c | |
01100100 | 100 | 64 | d | |
01100101 | 101 | 65 | e | |
01100110 | 102 | 66 | f | |
01100111 | 103 | 67 | g | |
01101000 | 104 | 68 | h | |
01101001 | 105 | 69 | i | |
01101010 | 106 | 6A | j | |
01101011 | 107 | 6B | k | |
01101100 | 108 | 6C | l | |
01101101 | 109 | 6D | m | |
01101110 | 110 | 6E | n | |
01101111 | 111 | 6F | o | |
01110000 | 112 | 70 | p | |
01110001 | 113 | 71 | q | |
01110010 | 114 | 72 | r | |
01110011 | 115 | 73 | s | |
01110100 | 116 | 74 | t | |
01110101 | 117 | 75 | u | |
01110110 | 118 | 76 | v | |
01110111 | 119 | 77 | w | |
01111000 | 120 | 78 | x | |
01111001 | 121 | 79 | y | |
01111010 | 122 | 7A | z | |
01111011 | 123 | 7B | { | |
01111100 | 124 | 7C | | | |
01111101 | 125 | 7D | } | |
01111110 | 126 | 7E | ~ | |
01111111 | 127 | 7F | DEL (delete) | 删除 |
Unicode 编码
- Unicode 编码的目标是支持全世界的字符集
- 在值前面加
\u
:char u = '\u005d'
转移字符
转移字符 | 描述 | ASCII 值 |
---|---|---|
\a | 响铃 | 007 |
\b | 退格 | 008 |
\f | 换页 | 012 |
\n | 换行 | 010 |
\r | 回车 | 013 |
\t | 水平制表 | 009 |
\v | 垂直制表 | 011 |
\\ | 表示一个反斜杠字符\ | 092 |
\' | 代表一个单引号字符' | 039 |
\" | 代表一个双引号字符" | 034 |
\? | 代表一个问号? | 063 |
\0 | 空字符 | 000 |
\ddd | 一到三位八进制数表示的任意字符 | |
\xhh | 十六进制所表示的任意字符 |
面试题
数字类型
IEEE754
Float 精度问题
public class FloatDemo {
public static void main(String[] args) {
float f1 = 423432423F;
float f2 = f1 + 1;
System.out.println("f1 == f2 :" + (f1 == f2));
}
}
// f1 == f2 :true
生成随机数
import java.util.Random;
public class RandomDemo {
public static void main(String[] args) {
// 生成 300 - 100 的随机数
int max = 100;
int min = 30;
// [30,100)
int random = new Random().nextInt(max + 1 - min) + min;
System.out.println(random);
int random2 = (int) (Math.random() * 70 + 30);
System.out.println(random2);
}
}
求 1-1000 的质数
public class PrimeNumber {
public static void main(String[] args) {
// 打印出 1 - 1000 之间的质数
int round = 1000;
for (int i = 2; i <= round; i++) {
boolean prime = true;
for (int j = 2; j < i; j++) {
if (i % j == 0) {
prime = false;
break;
}
}
if (prime) {
System.out.println(i + " 是质数!");
}
}
}
}