Java基础


关于Java基础的杂记

第一章 概述

java转义字符

  • \t

    一个制表位,实现对齐功能

  • \n

    换行符

  • \\\

    一个真实的斜杠

  • \\”

    一个真实的双引号

  • \\’

    一个真实的单引号

  • \r

    一个回车,没有换行,将光标置于最前,逐个输出\r后的字符

注释

  • 单行注释

    1
    //需要注释的语句
  • 多行注释

    1
    2
    3
    /*
    这里是多行注释
    */
  • Javadoc注释

    1
    2
    3
    4
    /**
    * @author lael
    * @version 1.0
    */
  • 细节

    • 注释语句不会执行
    • 多行注释不允许嵌套多行注释

代码规范

  1. 类、方法的注释,要以javadoc的方式来写
  2. 非javadoc注释着重告诉维护者如何修改、为什么这样写,以及注意事项
  3. 运算符和 = 两边加一个空格
  4. 实际工作使用UTF-8编码格式
  5. 行宽不超过80字符
  6. 代码编写使用行尾风格或次行风格

JDK、JRE、JVM之间关系

  1. JDK = JRE + JAVA开发工具
  2. JRE = JVM + 核心类库

第二章 变量

变量注意事项

  1. int 4个字节、double 8个字节,每个类型占用空间不同
  2. 变量必须先声明,后使用
  3. 变量在同一个作用域中不可重名
  4. 变量 = 变量名 + 值 + 数据类型 (三要素)

+ 号

  • 当 + 左右两边有一方为字符串,则做拼接运算
  • 两边均为数值类型,则做加法运算

  • 运算顺序为从左到右

数据类型

  • 数值型
    • 整数:byte[1]、short[2]、int[4]、long[8]
    • 浮点数(小数):float[4]、double[8]
  • 字符型
    • char[2]:存放单个字符,如 ‘a’
  • 布尔型
    • boolean[1]:存放true/false

整型使用细节

  1. java整型常量默认为int类型,声明long型常量须后加 ‘l’ 或 ‘L’

    • bit:计算机中最小存储单位

      • byte:计算机中基本存储单位
      • 1 byte = 8 bit

浮点型使用细节

  1. 默认为double类型,声明float型单精度常量须后加 ‘f’ 或 ‘F’
  2. 表示形式:
    • 十进制
    • 科学计数法,如:5.12e10 = 5.12 x 1010
  3. 通常情况下应该使用double,因为它比float更精确,而float会损失一些小数位

字符型使用细节

  1. 字符常量用单引号括起单个字符
  2. 允许使用转义字符
  3. char的本质是一个整数,所以可以直接给char赋值整数,输出时是对应unicode对应字符
  4. char类型可以进行运算

基本数据类型的转换

  • 精度小的类型自动转换为精度大的数据类型

    char int long float double

    byte short int long float double

  • 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的数据类型,再进行计算

  • 精度大的赋值给精度小的数据类型就会报错

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

  • byte, short, char 三者之间可以计算,在计算时首先转换为int类型

  • boolean不参与类型自动转换

强制转换细节

  1. 需要数据从大到小时,就需要使用强制转换

字符串转换基本类型

1
2
3
4
5
6
7
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 b = Boolean.parseBoolean("true");
short num6 = Short.parseShort(s5);
  1. 转换错误类型,会抛出异常,程序终止

运算符

% 取余,取模

1
2
3
4
5
6
// % 取模,取余
// 本质公式:a % b = a - a / b * b
System.out.println(10 % 3); //1
System.out.println(-10 % 3); //-1
System.out.println(10 % -3); //1
System.out.println(-10 % -3); //-1

++ 自增 / — 自减

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// ++ 自增
int i = 10;
i++; //自增 等价于 i = i + 1 => i = 11
++i; //自增 等价于 i = i + 1 => i = 12
System.out.println("i=" + i);

/*
作为表达式使用
前++ :++i先自增后赋值
后++ :i++先赋值后自增
*/
int j = 8;
// int k = ++j; //等价于 j = j + 1; k = j;
int k = j++; //等价于 k = j; j = j + 1;
System.out.println("k=" + k + "\nj=" + j);

逻辑运算符

逻辑与 &

对于逻辑与,第一个条件为false,后面条件仍会判断执行

短路与 &&

对于短路与,第一个条件为false,后面条件不再判断执行

逻辑或 |

对于逻辑或,第一个条件为true,后面条件仍会判断执行

逻辑或 ||

对于短路或,第一个条件为true,后面条件不再判断执行

异或操作 ^

a ^ b,如果a与b结果不同,则为true,否则为false

取反操作 ~

对参数二进制格式进行01取反

三元运算符

条件表达式 ? 表达式1 : 表达式2

  1. 如果条件表达式为true,运算后的结果是表达式1
  2. 如果条件表达式为false,运算后的结果是表达式2
1
2
3
4
int a = 10;
int b = 99;
int result = a > b ? a++ : b--;
System.out.println("result: " + result + "\nb: " + b);

位移运算符

左移运算符 <<

按二进制位数左移指定位数

右移运算符 >>

按二进制位数右移指定位数

右移补零操作符 >>>

按二进制位数右移指定位数,移动得到的的空位以零填充

标识符的命名规则和规范

标识符概念

  1. Java中对各种变量、方法和类等命名时使用的字符序列称为标识符
  2. 凡是自己起名字的地方都称为标识符

命名规则

  1. 由26个英文字母大小写,0-9,或$组成
  2. 不可以使用数字开头
  3. 不可以使用关键字和保留字,但可以包含
  4. 严格区分大小写,长度无限制
  5. 标识符不能包含空格

包名

多单词组成时所有字母小写

例:com.hahah.cpm

类名 、接口名

多单词组成时,所有单词首字母大写 [大驼峰]

例:TankShotGame

变量名、方法名

多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写 [小驼峰]

例:tankShotGame

常量名

所有字母都大写,多个单词时用下划线连接

例:定义一个所得税税率 TAX_RATE

进制

二进制

0,1,满2进1,以 0b0B 开头

转八进制

从低位(右)开始,将二进制数没三位一组,转成对应八进制数。

例:0b11010101转为八进制

0b11(3)010(2)101(5) = 0325

95

十进制

0-9,满10进1

转二进制

将十进制数不断除以2,直到商为0,再将每步得到的余数倒置,就是对应的二进制

例:十进制34转为二进制

0b100010

转八进制

将十进制数不断除以8,直到商为0,再将每步得到的余数倒置,就是对应的八进制

例:十进制131转为八进制

0203

转十六进制

将十进制数不断除以16,直到商为0,再将每步得到的余数倒置,就是对应的十六进制

例:十进制237转为十六进制

0xED

八进制

0-7,满8进1,以数字0开头

十六进制

0-9以及A(10)-F(15)

满16进1,以0x0X开头

A-F不区分大小写

快捷键

  • Ctrl + d 复制本行到下一行

评论