Java 常量与变量

标识符

  • 标识符可以由字母、数字、下划线_和美元符$组成,且不能以数字开头
  • 标识符完全区分大小写,即void是关键字,Void是合法的标识符
  • 标识符不能是 Java 关键字和保留字
  • 标识符命名最好能见名知意

关键字

img

gotoconst在 Java 中被定义为保留字,暂未使用

变量

  • 变量是程序中数据的零时存放场所
  • 变量的三元素:变量类型、变量名和变量值

变量的命名规则

  • 满足标识符命名规则
  • 符合驼峰法命名规范
  • 尽量简短、见名知意

类的命名规则

  • 满足 Pascal 命名规范

数据类型

数据类型介绍

数据类型

  1. 整型的应用场景

    • 整型主要用来存储整数,如:1,2,3等等。
    • 按照存储数据的范围不同分为四种,分别是:byte、short、int、long,数据表示范围依次增大。
    • byte类型主要对二进制数据进行存储,在文件输入输出流部分将会使用,用于二进制数据的传输。
    • short类型在有的需求中会用到,比如:对于登录账号的状态表示,一般用0表示正常,1表示冻结,2表示已删除。这里的数值比较固定,值也比较小,可以使用short类型表示。
  2. 浮点型的应用场景

    • 浮点类型表示小数,包括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

字面值

  1. 整形字面值
    • Java 中有三种表示整数的方式:十进制、八进制、十六进制
  2. 浮点型字面值
    • 浮点值字面值默认表示double 类型,也可以在值后面加 d 或者 D
    • 如需表示float 类型,需要在字面值后面加 f 或 F
  3. 字符型字面值
    • 字符型字面值用单引号内的单个字符表示
  4. 布尔字面值
    • 布尔值只能定义为 true false
  5. 字符串字面值
    • 字符串不属于基本数据类型
    • 双引号引起来的 0 个或多个字符

变量声明

  • 格式:变量类型 变量名;
  • int n;声明整形变量 n
  • long count;声明长整型变量 count

赋值

  • 使用=运算符进行赋值
  • =右边的值赋值给左边的变量
  • int n;n=3;定义 int 型变量 n,将 3 赋值给变量 n

变量定义

  • 可以在变量声明时给变量赋值:int n = 3;

类型转换

  • 类型转换分为自动类型转换和强制类型转换:char ch = (char)65536;
  • 自动类型转换也叫做隐式类型转换

Java 基本数据类型转换

常量

  • 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 编码的目标是支持全世界的字符集
  • 在值前面加\uchar 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 十六进制所表示的任意字符

面试题

数字类型

image-20201123220811706

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 + " 是质数!");
            }
        }
    }
}