0x00:基本语法

编写 Java 程序时,应注意以下几点:

  • 大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的。
  • 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass
  • 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
  • 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。
  • 主方法入口:所有的 Java 程序由 public static void main(String[] args) 方法开始执行。

0x01:注释

类似于 C/C++、Java 也支持单行以及多行注释。注释中的字符将被 Java 编译器忽略。

  1. public class HelloWorld {
  2. /* 这是第一个Java程序
  3. * 它将输出 Hello World
  4. * 这是一个多行注释的示例
  5. */
  6. public static void main(String[] args){
  7. // 这是单行注释的示例
  8. /* 这个也是单行注释的示例 */
  9. System.out.println("Hello World");
  10. }
  11. }

0x02:关键字

关键字特点:

  • 关键字的字母全部小写
  • 常用的代码编辑器,针对关键字有特殊的颜色标记,非常直观

image.png
下面列出了 Java 关键字。这些保留字不能用于常量、变量、和任何标识符的名称。

类别 关键字 说明
访问控制 private 私有的
protected 受保护的
public 公共的
default 默认
类、方法和变量修饰符 abstract 声明抽象
class
extends 扩充,继承
final 最终值,不可改变的
implements 实现(接口)
interface 接口
native 本地,原生方法(非 Java 实现)
new 新,创建
static 静态
strictfp 严格,精准
synchronized 线程,同步
transient 短暂
volatile 易失
程序控制语句 break 跳出循环
case 定义一个值以供 switch 选择
continue 继续
default 默认
do 运行
else 否则
for 循环
if 如果
instanceof 实例
return 返回
switch 根据值选择执行
while 循环
错误处理 assert 断言表达式是否为真
catch 捕捉异常
finally 有没有异常都执行
throw 抛出一个异常对象
throws 声明一个异常可能被抛出
try 捕获异常
包相关 import 引入
package
基本类型 boolean 布尔型
byte 字节型
char 字符型
double 双精度浮点
float 单精度浮点
int 整型
long 长整型
short 短整型
变量引用 super 父类,超类
this 本类
void 无返回值
保留关键字 goto 是关键字,但不能使用
const 是关键字,但不能使用

注意:Java 的 null 不是关键字,类似于 true 和 false,它是一个字面常量,不允许作为标识符使用。

0x03:常量

常量分类:

常量类型 说明 举例
字符串常量 用双引号括起来的内容 “helloworld” ,”乐乐”
整数常量 不带小数的数字 666,-888
小数常量 带小数的数字 13.14,-5.21
字符常量 用单引号括起来的内容 ‘A’,’0’,’我’
布尔常量 布尔值,表示真假 只有两个值:true , false
空常量 一个特殊的值,空值 值是:null

常量在程序运行时是不能被修改的。
在 Java 中使用 final 关键字来修饰常量,声明方式和变量类似:

  1. final double PI = 3.1415927;

虽然常量名也可以用小写,但为了便于识别,通常使用大写字母表示常量。
字面量可以赋给任何内置类型的变量。例如:

  1. byte a = 68; char a = 'A'

byte、int、long、和short都可以用十进制、16进制以及8进制的方式来表示。
当使用字面量的时候,前缀 0 表示 8 进制,而前缀 0x 代表 16 进制, 例如:

  1. int decimal = 100;
  2. int octal = 0144;
  3. int hexa = 0x64;

和其他语言一样,Java的字符串常量也是包含在两个引号之间的字符序列。下面是字符串型字面量的例子:

  1. "Hello World"
  2. "two\nlines"
  3. "\"This is in quotes\""

字符串常量和字符常量都可以包含任何Unicode字符。例如:

  1. char a = '\u0001';
  2. String a = "\u0001";

Java语言支持一些特殊的转义字符序列。

符号 字符含义
\n 换行 (0x0a)
\r 回车 (0x0d)
\f 换页符(0x0c)
\b 退格 (0x08)
\0 空字符 (0x0)
\s 空格 (0x20)
\t 制表符
\“ 双引号
\‘ 单引号
\\ 反斜杠
\ddd 八进制字符 (ddd)
\uxxxx 16进制Unicode字符 (xxxx)

0x04:数据类型

(一) 计算机存储单元:

我们知道计算机是用来存储 数据的,但是无论是内存还是硬盘,计算机存储设备的最小信息单元叫做 “位(bit)”,我们又称之为“比特位”,通常用最小的字母“b”表示。而计算机中最小的存储单元叫“字节(byte)”,通常用大写字母“B”表示,字节通常是由连续的8个位组成。

除了字节还有一个常用的存储单位,如下所示:
1B(字节)= 8 bit
1 KB = 1024 B
1 MB = 1024 KB
1 GB = 1024 MB
1 TB = 1024 GB

(二)数据类型

Java语言是强类型语言,对于每一种数据都给出了明确的数据类型,不同的数据类型也分配了不同的内存空间,所以他们表示的数据大小也是不一样的。
image.png
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

内置数据类型

(1)byte:

  • byte 数据类型是8位、有符号的,以二进制补码表示的整数;
  • 最小值是 -128(-2^7)
  • 最大值是 127(2^7-1)
  • 默认值是 0
  • byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;
  • 例子:byte a = 100,byte b = -50。


(2)short:

  • short 数据类型是 16 位、有符号的以二进制补码表示的整数
  • 最小值是 -32768(-2^15)
  • 最大值是 32767(2^15 - 1)
  • Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
  • 默认值是 0
  • 例子:short s = 1000,short r = -20000。


(3)int:

  • int 数据类型是32位、有符号的以二进制补码表示的整数;
  • 最小值是 -2,147,483,648(-2^31)
  • 最大值是 2,147,483,647(2^31 - 1)
  • 一般地整型变量默认为 int 类型;
  • 默认值是 0
  • 例子:int a = 100000, int b = -200000。

(4)long:

  • long 数据类型是 64 位、有符号的以二进制补码表示的整数;
  • 最小值是 -9,223,372,036,854,775,808(-2^63)
  • 最大值是 9,223,372,036,854,775,807(2^63 -1)
  • 这种类型主要使用在需要比较大整数的系统上;
  • 默认值是 0L
  • 例子: long a = 100000L,Long b = -200000L。
    “L”理论上不分大小写,但是若写成”l”容易与数字”1”混淆,不容易分辩。所以最好大写。

(5)float:

  • float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
  • float 在储存大型浮点数组的时候可节省内存空间;
  • 默认值是 0.0f
  • 浮点数不能用来表示精确的值,如货币;
  • 例子:float f1 = 234.5f。

(6)double:

  • double 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数;
  • 浮点数的默认类型为 double 类型;
  • double类型同样不能表示精确的值,如货币;
  • 默认值是 0.0d
  • 例子:
    1. double d1 = 7D ;
    2. double d2 = 7.;
    3. double d3 = 8.0;
    4. double d4 = 8.D;
    5. double d5 = 12.9867;
    6. 7 是一个 int 字面量,而 7D7. 8.0 double 字面量。

(7)boolean:

  • boolean数据类型表示一位的信息;
  • 只有两个取值:true 和 false;
  • 这种类型只作为一种标志来记录 true/false 情况;
  • 默认值是 false
  • 例子:boolean one = true。


(8)char:

  • char 类型是一个单一的 16 位 Unicode 字符;
  • 最小值是 \u0000(十进制等效值为 0);
  • 最大值是 \uffff(即为 65535);
  • char 数据类型可以储存任何字符;
  • 例子:char letter = ‘A’;。

下表列出了 Java 各个类型的默认值:

数据类型 默认值
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0d
char ‘u0000’
String (or any object) null
boolean false

引用类型

  • 在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Employee、Puppy 等。变量一旦声明后,类型就不能被改变了。
  • 对象、数组都是引用数据类型。
  • 所有引用类型的默认值都是null。
  • 一个引用变量可以用来引用任何与之兼容的类型。
  • 例子:Site site = new Site(“Runoob”)。

自动类型转换

整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。
转换从低级到高级。
低 ——————————————————> 高 byte,short,char—> int —> long—> float —> double

数据类型转换必须满足如下规则:

    1. 不能对boolean类型进行类型转换。
    1. 不能把对象类型转换成不相关类的对象。
    1. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
    1. 转换过程中可能导致溢出或损失精度,例如:
      1. int i =128; byte b = (byte)i;
      因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。
    1. 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:
      1. (int)23.7 == 23;
      2. (int)-45.89f == -45

      自动类型转换

      必须满足转换前的数据类型的位数要低于转换后的数据类型,例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型。

实例

  1. public class ZiDongLeiZhuan{
  2. public static void main(String[] args){
  3. char c1='a';//定义一个char类型
  4. int i1 = c1;//char自动类型转换为int
  5. System.out.println("char自动类型转换为int后的值等于"+i1);
  6. char c2 = 'A';//定义一个char类型
  7. int i2 = c2+1;//char 类型和 int 类型计算
  8. System.out.println("char类型和int计算后的值等于"+i2);
  9. }
  10. }

解析:c1 的值为字符 a ,查 ASCII 码表可知对应的 int 类型值为 97, A 对应值为 65,所以 i2=65+1=66

强制类型转换

    1. 条件是转换的数据类型必须是兼容的。
    1. 格式:(type)value type是要强制类型转换后的数据类型 实例:

实例

  1. public class QiangZhiZhuanHuan{
  2. public static void main(String[] args){
  3. int i1 = 123;
  4. byte b = (byte)i1;//强制类型转换为byte
  5. System.out.println("int强制类型转换为byte后的值等于"+b);
  6. }
  7. }

隐含强制类型转换

  • 1、 整数的默认类型是 int。
    1. 小数默认是 double 类型浮点型,在定义 float 类型时必须在数字后面跟上 F 或者 f。

0x05:变量

变量:在程序运行中,其值可以发送改变的量。本质上来说:变量是内存中的一小块区域

变量的定义: 数据类型 变量 = 变量值
范例:int a = 10;

变量的使用: 取值格式: 变量名
image.png

变量使用的注意事项:

  • 名字不能重复
  • 变量未赋值,不能使用
  • long类型的变量定义的时候,为了防止整数过大, 后面要加L
  • float类型的变量定义的时候,为了防止类型不兼容,后面要加F