JavaSE总结(二)——语言基础

一、注释

在java中,有3种标记注释的方式。

1.1 单行注释

//单行注释内容

1.2 多行注释

/*
多行注释内容
多行注释内容
多行注释内容
多行注释内容
*/ 

1.3 文档注释

/**
 * 类注释
 *
 * @author vivfeng
 */
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

二、关键字

2.1 总览

访问控制

private

protected

public

           

类,方法和变量修饰符

abstract

class

extends

final

implements

interface

native

new

static

strictfp

synchronized

transient

volatile

         

程序控制

break

continue

return

do

while

if

else

for

instanceof

switch

case

default

           

错误处理

try

catch

throw

throws

         

包相关

import

package

             

基本类型

boolean

byte

char

double

float

int

long

short

null

true

false

             

变量引用

super

this

void

           

保留字

goto

const
 

             
### 2.2 含义
关键字 含义
abstract 表明类或者成员方法具有抽象属性
assert 用来进行程序调试
boolean 基本数据类型之一,布尔类型
break 提前跳出一个块
byte 基本数据类型之一,字节类型
case 用在switch语句之中,表示其中的一个分支
  
catch 用在异常处理中,用来捕捉异常
char 基本数据类型之一,字符类型
class
const 保留关键字,没有具体含义
continue 回到一个块的开始处
default 默认,例如,用在switch语句中,表明一个默认的分支
do 用在do-while循环结构中
double 基本数据类型之一,双精度浮点数类型
else 用在条件语句中,表明当条件不成立时的分支
enum 枚举
extends 表明一个类型是另一个类型的子类型,这里常见的类型有类和接口
final 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变
finally 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块
float 基本数据类型之一,单精度浮点数类型
for 一种循环结构的引导词
goto 保留关键字,没有具体含义
if 条件语句的引导词
implements 表明一个类实现了给定的接口
import 表明要访问指定的类或包
instanceof 用来测试一个对象是否是指定类型的实例对象
int 基本数据类型之一,整数类型
interface 接口
long 基本数据类型之一,长整数类型
native 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的
new 用来创建新实例对象
package
private 一种访问控制方式:私用模式
protected 一种访问控制方式:保护模式
public 一种访问控制方式:共用模式
return 从成员方法中返回数据
short 基本数据类型之一,短整数类型
static 表明具有静态属性
strictfp 用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范
super 表明当前对象的父类型的引用或者父类型的构造方法
switch 分支语句结构的引导词
synchronized 表明一段代码需要同步执行
this 指向当前实例对象的引用
throw 抛出一个异常
throws 声明在当前定义的成员方法中所有需要抛出的异常
transient 声明不用序列化的成员域
try 尝试一个可能抛出异常的程序块
void 声明当前成员方法没有返回值
volatile
  
表明两个或者多个变量必须同步地发生变化
while
  
用在循环结构中 

三、常量与变量

3.1 常量

在 Java中,利用关键字 final指示常量。例如:

final int A = 1;

关键字 final 表示这个变量只能被赋值一次。一旦被赋值之后,就不能够再更改了。习惯上, 常量名使用全大写。

3.2 变量

在 Java中,每个变量都有一个类型。在声明变量时,变量的类型位于变量名之前。例如:

int a;
long b;
String s;

变量名必须是一个以字母开头并由字母或数字构成的序列。另外,不能使用 Java 保留字作为变量名。

四、运算符

4.1 算术运算符

运算符 描述 例子
+ 加法:相加运算符两侧的值 A + B 等于 30
- 减法:左操作数减去右操作数 A – B 等于 -10
* 乘法:相乘操作符两侧的值 A * B等于200
/ 除法:左操作数除以右操作数 B / A等于2
取余:左操作数除以右操作数的余数 B%A等于0
++ 自增:操作数的值增加1 B++ 或 ++B 等于 21
-- 自减:操作数的值减少1 B-- 或 --B 等于 19

4.2 关系运算符

运算符 描述 例子
== 检查如果两个操作数的值是否相等,如果相等则条件为真。 (A == B)为假。
!= 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 (A != B) 为真。

|检查左操作数的值是否大于右操作数的值,如果是那么条件为真。| (A > B)为假。
< |检查左操作数的值是否小于右操作数的值,如果是那么条件为真。| (A <B)为真。
= |检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 |(A >= B)为假。
<= |检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 |(A <= B)为真。

4.3 位运算符

运算符 描述 例子
如果相对应位都是1,则结果为1,否则为0 (A&B)得到12,即 0000 1100
| 如果相对应位都是0,则结果为0,否则为1 (A | B)得到61,即 0011 1101
^ 如果相对应位值相同,则结果为0,否则为1 (A ^ B)得到49,即 0011 0001
按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 (〜A)得到-61,即 1100 0011
<< 按位左移运算符。左操作数按位左移右操作数指定的位数。 (A << 2)得到240,即 1111 0000

|按位右移运算符。左操作数按位右移右操作数指定的位数。 |(A >> 2)得到15,即 0000 1111

|按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 |(A>>>2)得到15,即 0000 1111

4.4 逻辑运算符

运算符 描述 例子
&& 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 (A && B)为假。
|| 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 (A || B)为真。
称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 !(A && B) 为真。

4.4 赋值运算符

运算符 描述 例子
= 赋值运算符,将右操作数的值赋给左侧操作数 C = A + B将把A + B得到的值赋给C
+= 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 C += A等价于C = C + A
-= 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 C -= A等价于C = C - A
*= 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 C *= A等价于C = C * A
/= 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 C /= A等价于C = C / A
%= 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 C %= A等价于C = C%A
<<= 左移位赋值运算符 C <<= 2等价于C = C << 2

= |右移位赋值运算符| C >>= 2等价于C = C >> 2
&= |按位与赋值运算符| C&= 2等价于C = C&2
^= |按位异或赋值操作符| C ^= 2等价于C = C ^ 2
|= |按位或赋值操作符| C |= 2等价于C = C | 2

4.5 条件运算符(?:)

条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。

int a = 1;
int b = 2;
boolean f = a >= b ? true : false;//f为false

五、数据类型

5.1 基本数据类型

/* byte
 * 存储需求:1字节
 * 取值范围:-128 ~ 127
 * 默认值:0
 * */
byte num1 = 100;

/* short
 * 存储需求:2字节
 * 取值范围:-32,768 ~ 32,767
 * 默认值:0
 * */
short num2 = 10000;

/* int
 * 存储需求:4字节
 * 取值范围:-2,147,483,648 ~ 2,147,483,647
 * 默认值:0
 * */
int num3 = 1_000_000_000;

/* long
 * 存储需求:8字节
 * 取值范围:-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
 * 默认值:0L
 * */
long num4 = 1_000_000_000_000_000_000L;

/* float
 * 存储需求:4字节
 * 有效位数:6 ~ 7位
 * 默认值:0.0F
 * */
float num5 = 1.1F;

/* double
 * 存储需求:8字节
 * 有效位数:15位
 * 默认值:0.0D
 * */
double num6 = 2.0D;

/* boolean
 * 存储需求:JVM规范中,boolean变量作为int处理,也就是4字节
 * 取值范围:只有两个取值,即 true 和 false
 * 默认值:false
 * */
boolean k = true;

/* char
 * 存储需求:2字节
 * 取值范围:0~65535
 * */
char c = 'a';

5.2 引用数据类型

/*
 * 在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。
 * 这些变量在声明时被指定为一个特定的类型,比如 String 等。
 * 变量一旦声明后,类型就不能被改变了。
 * 对象、数组都是引用数据类型。
 * 所有引用类型的默认值都是 null。
 */
String string = null;
string = new String("aaaaa");

六、大数值

如果基本的整数和浮点数精度不能够满足需求,那么可以使用java.math包中的两个很有用的类:Biglnteger和 BigDecimaL,这两个类可以处理包含任意长度数字序列的数值。
BigInteger类实现了任意精度的整数运算,BigDecimal类实现了任意精度的浮点数运算。

//使用静态的 valueOf方法可以将普通的数值转换为大数值
BigInteger bigA = BigInteger.valueOf(5L);
BigInteger bigB = BigInteger.valueOf(10L);
BigInteger bigC = null;
//加
bigC = bigA.add(bigB);
//减
bigC = bigA.subtract(bigB);
//乘
bigC = bigA.multiply(bigB);
//除
bigC = bigA.divide(bigB);
//取余
bigC = bigA.mod(bigB);

七、数组

数组是一种数据结构,用来存储同一类型值的集合。通过一个整型下标可以访问数组中的每一个值。在声明数组变量时, 需要指出数组类型 (数据元素类型紧跟 [] ) 和数组变量的名字。一旦创建了数组,就不能再改变它的大小。

7.1 一维数组

//静态初始化
//静态初始化的同时就为数组元素分配空间并赋值
int[] array1 = {1, 2, 3, 4};

//动态初始化
int[] array2 = new int[4];
array2[0] = 1;
array2[1] = 2;
array2[2] = 3;
array2[3] = 4;

7.2 二维数组

//静态初始化
int[][] array3 = {{1, 2}, {2, 3}, {4, 5}};

//动态初始化
int[][] array4 = new int[2][3];
array4[0][0] = 12;
array4[0][1] = 34;
array4[0][2] = 93;
array4[1][0] = 12;
array4[1][1] = 34;
array4[1][2] = 93;

7.3 遍历数组

//for循环
for (int i = 0; i < array1.length; i++) {
    System.out.println(array1[i]);
}
//for each循环
for (int i : array1) {
    System.out.println(i);
}

八、控制流程

8.1 条件分支

int n = 19;
if (n < 10) {
    System.out.println(n + " < 10");
} else if (n < 50) {
    System.out.println("10 < " + n + " < 50");
} else {
    System.out.println("50 < " + n);
}

8.2 开关分支

int n = 1;
switch (n) {
    case 1:
        System.out.println("n = 1");
        break;
    case 2:
        System.out.println("n = 2");
        break;
    case 3:
        System.out.println("n = 3");
        break;
    default:
        System.out.println("n未知");
        break;
}

8.3 循环

Integer[] integers = new Integer[5];
integers[0] = 0;
integers[1] = 1;
integers[2] = 2;
integers[3] = 3;
integers[4] = 4;
//for循环
for (int i = 0; i < integers.length; i++) {
    System.out.println(integers[i]);
}
//for each循环
for (Integer integer : integers) {
    System.out.println(integer);
}
//while循环
int j = 0;
while (j < integers.length) {
    System.out.println(integers[j]);
    j++;
}
//do while循环
int m = 0;
do {
    System.out.println(integers[m]);
    m++;
} while (m < integers.length);
原文地址:https://www.cnblogs.com/vivfeng/p/10048363.html