• Java分为三个体系
  • 基本语法
  • Java修饰符
  • 关键字
  • 内置数据类型
  • 类型转换
  • Java局部变量
  • 实例变量
  • 类变量静态变量
  • 访问控制修饰符
  • 访问控制和继承
  • 非访问修饰符
  • Static 修饰符
  • 运算符
  • 循环结构
  • 分支结构
  • Number 类
  • Character 类
  • String 类
  • String 方法
  • StringBuffer StringBuilder
  • 数组
  • 日期时间
  • 正则表达式
  • 方法的重载
  • 构造方法
  • 可变参数
  • finalize 方法


编译:javac HelloWorld.java
运行:java HelloWorld

Java分为三个体系:

  • JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版)
  • JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平台企业版)
  • JavaME(J2ME)(Java 2 Platform Micro Edition,java平台微型版)

基本语法:

  • 大小写敏感:Java是大小写敏感的
  • 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass
  • 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写
  • 源文件名:源文件名必须和类名相同,文件名的后缀为.java
  • 主方法入口:所有的Java 程序由public static void main(String []args)方法开始执行

Java修饰符:

  • 访问控制修饰符 : default, public , protected, private
  • 非访问控制修饰符 : final, abstract, strictfp

关键字:

关键字

说明

abstract

抽象方法,抽象类的修饰符

assert

断言条件是否满足

boolean

布尔数据类型

break

跳出循环或者label代码段

byte

8-bit 有符号数据类型

case

switch语句的一个条件

catch

和try搭配扑捉异常信息

char

16-bit Unicode字符数据类型

class

定义类

const

未使用

continue

不执行循环体剩余部分

default

switch语句中的默认分支

do

循环语句,循环体至少会执行一次

double

64-bit双精度浮点数

else

if条件不成立时执行的分支

enum

枚举类型

extends

表示一个类是另一个类的子类

final

表示一个值在初始化之后就不能再改变了,表示方法不能被重写,或者一个类不能有子类

finally

为了完成执行的代码而设计的,主要是为了程序的健壮性和完整性,无论有没有异常发生都执行代码。

float

32-bit单精度浮点数

for

for循环语句

goto

未使用

if

条件语句

implements

表示一个类实现了接口

import

导入类

instanceof

测试一个对象是否是某个类的实例

int

32位整型数

interface

接口,一种抽象的类型,仅有方法和常量的定义

long

64位整型数

native

表示方法用非java代码实现

new

分配新的类实例

package

一系列相关类组成一个包

private

表示私有字段,或者方法等,只能从类内部访问

protected

表示字段只能通过类或者其子类访问,子类或者在同一个包内的其他类

public

表示共有属性或者方法

return

方法返回值

short

16位数字

static

表示在类级别定义,所有实例共享的

strictfp

浮点数比较使用严格的规则

super

表示基类

switch

选择语句

synchronized

表示同一时间只能由一个线程访问的代码块

this

表示调用当前实例,或者调用另一个构造函数

throw

抛出异常

throws

定义方法可能抛出的异常

transient

修饰不要序列化的字段

try

表示代码块要做异常处理或者和finally配合表示是否抛出异常都执行finally中的代码

void

标记方法不返回任何值

volatile

标记字段可能会被多个线程同时访问,而不做同步

while

while循环

内置数据类型:

Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

类型


最小值

最大值

默认值

说明

byte

8位

最小值是-128(-2^7)

最大值是127(2^7-1)

默认值是0

有符号的、以二进制补码表示的整数;

short

16位

最小值是-32768(-2^15)

最大值是32767(2^15 - 1)

默认值是0

有符号的以二进制补码表示的整数;

int

32位

最小值是-2,147,483,648(-2^31)

最大值是2,147,483,647(2^31 - 1)

默认值是0

有符号的以二进制补码表示的整数;

long

64位

最小值是-9,223,372,036,854,775,808(-2^63)

最大值是9,223,372,036,854,775,807(2^63 -1)

默认值是0L

有符号的以二进制补码表示的整数;

float

32位、单精度

默认值是0.0f

double

64位、双精度

默认值是0.0d

boolean

1位

默认值是false

只有两个取值:true和false;

char

16位、Unicode字符

最小值是’\u0000’(即为0)

最大值是’\uffff’(即为65,535)

char数据类型可以储存任何字符;

类型转换:

  • 自动类型转换 必须满足转换前的数据类型的位数要低于转换后的数据类型
  • 强制类型转换 条件是转换的数据类型必须是兼容的,格式:(type)value type是要强制类型转换后的数据类型
  • 隐含强制类型转换 F,f,0,0x

声明变量:type identifier [ = value][, identifier [= value] ...];

Java局部变量:

  • 局部变量声明在方法、构造方法或者语句块中;
  • 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;
  • 访问修饰符不能用于局部变量;
  • 局部变量只在声明它的方法、构造方法或者语句块中可见;
  • 局部变量是在栈上分配的。
  • 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。

实例变量:

  • 实例变量声明在一个类中,但在方法、构造方法和语句块之外;
  • 当一个对象被实例化之后,每个实例变量的值就跟着确定;
  • 实例变量在对象创建的时候创建,在对象被销毁的时候销毁;
  • 实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息;
  • 实例变量可以声明在使用前或者使用后;
  • 访问修饰符可以修饰实例变量;
  • 实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见;
  • 实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定;
  • 实例变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名:ObejectReference.VariableName。

类变量(静态变量):

  • 类变量也称为静态变量,在类中以static关键字声明,但必须在方法构造方法和语句块之外。
  • 无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。
  • 静态变量除了被声明为常量外很少使用。常量是指声明为public/private,final和static类型的变量。常量初始化后不可改变。
  • 静态变量储存在静态存储区。经常被声明为常量,很少单独使用static声明变量。
  • 静态变量在程序开始时创建,在程序结束时销毁。
  • 与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为public类型。
  • 默认值和实例变量相似。数值型变量默认值是0,布尔型默认值是false,引用类型默认值是null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化。
  • 静态变量可以通过:ClassName.VariableName的方式访问。
  • 类变量被声明为public static final类型时,类变量名称必须使用大写字母。如果静态变量不是public和final类型,其命名方式与实例变量以及局部变量的命名方式一致。

访问控制修饰符:

  • Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java支持4种不同的访问权限。
  • 默认的,也称为 default,在同一包内可见,不使用任何修饰符。
  • 私有的,以 private 修饰符指定,在同一类内可见。
  • 共有的,以 public 修饰符指定,对所有类可见。
  • 受保护的,以 protected 修饰符指定,对同一包内的类和所有子类可见。

修饰符

当前类

同一包内

子孙类

其他包

public

Y

Y

Y

Y

protected

Y

Y

Y

N

default

Y

Y

N

N

private

Y

N

N

N

访问控制和继承:

  • 父类中声明为 public 的方法在子类中也必须为 public。
  • 父类中声明为 protected 的方法在子类中要么声明为 protected,要么声明为 public,不能声明为 private。
  • 父类中声明为 private 的方法,不能够被继承。

非访问修饰符:

  • static 修饰符,用来创建类方法和类变量。
  • Final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
  • Abstract 修饰符,用来创建抽象类和抽象方法。
  • Synchronized 和 volatile 修饰符,主要用于线程的编程。

Static 修饰符:

  • 静态变量:Static 关键字用来声明独立于对象的静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝。 静态变量也被成为类变量。局部变量不能被声明为 static 变量。
  • 静态方法:Static 关键字用来声明独立于对象的静态方法。静态方法不能使用类的非静态变量。静态方法从参数列表得到数据,然后计算这些数据。

运算符:

  • 算术运算符
  • 关系运算符
  • 位运算符
  • 逻辑运算符
  • 赋值运算符
  • 其他运算符

循环结构:

  • while 循环
  • do…while 循环
  • for 循环
  • 增强 for 循环 for(int x : numbers ){}

分支结构:

  • if 语句
  • switch 语句

Number 类:

在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情形。
为了解决这个问题,Java 语言为每一个内置数据类型提供了对应的包装类。
所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类 Number 的子类。

装箱 –> 拆箱

Integer x = 5;
x =  x + 10;

Number 方法:

名称

描述

xxxValue()

将number对象转换为xxx数据类型的值并返回。

compareTo()

将number对象与参数比较。

equals()

判断number对象是否与参数相等。

valueOf()

返回一个 Number 对象指定的内置数据类型

toString()

以字符串形式返回值。

parseInt()

将字符串解析为int类型。

abs()

返回参数的绝对值。

ceil()

对整形变量向左取整,返回类型为double型。

floor()

对整型变量向右取整。返回类型为double类型。

rint()

返回与参数最接近的整数。返回类型为double。

round()

返回一个最接近的int、long型值。

min()

返回两个参数中的最小值。

max()

返回两个参数中的最大值。

exp()

返回自然数底数e的参数次方。

log()

返回参数的自然数底数的对数值。

pow()

返回第一个参数的第二个参数次方。

sqrt()

求参数的算术平方根。

sin()

求指定double类型参数的正弦值。

cos()

求指定double类型参数的余弦值。

tan()

求指定double类型参数的正切值。

asin()

求指定double类型参数的反正弦值。

acos()

求指定double类型参数的反余弦值。

atan()

求指定double类型参数的反正切值。

atan2()

将笛卡尔坐标转换为极坐标,并返回极坐标的角度值。

toDegrees()

将参数转化为角度。

toRadians()

将角度转换为弧度。

random()

返回一个随机数。

Character 类:

Character ch = new Character('a');
Character ch = 'a';

Character 方法:

名称

描述

isLetter()

是否是一个字母

isDigit()

是否是一个数字字符

isWhitespace()

是否是一个空格

isUpperCase()

是否是大写字母

isLowerCase()

是否是小写字母

toUpperCase()

指定字母的大写形式

toLowerCase()

指定字母的小写形式

toString()

返回字符的字符串形式,字符串的长度仅为1

String 类:

一旦创建了 String 对象,那它的值就无法改变

char[] helloArray = { 'r', 'u', 'n', 'o', 'o', 'b'};
String helloString = new String(helloArray); 

String site = "www.runoob.com";

String fs;
fs = String.format("浮点型变量的的值为 " +
            "%f, 整型变量的值为 " +
            " %d, 字符串变量的值为 " +
            " %s", floatVar, intVar, stringVar);

String 方法:

方法

描述

char charAt(int index)

返回指定索引处的 char 值。

int compareTo(Object o)

把这个字符串和另一个对象比较。

int compareTo(String anotherString)

按字典顺序比较两个字符串。

int compareToIgnoreCase(String str)

按字典顺序比较两个字符串,不考虑大小写。

String concat(String str)

将指定字符串连接到此字符串的结尾。

boolean contentEquals(StringBuffer sb)

当且仅当字符串与指定的StringButter有相同顺序的字符时候返回真。

static String copyValueOf(char[] data)

返回指定数组中表示该字符序列的 String。

static String copyValueOf(char[] data, int offset, int count)

返回指定数组中表示该字符序列的 String。

boolean endsWith(String suffix)

测试此字符串是否以指定的后缀结束。

boolean equals(Object anObject)

将此字符串与指定的对象比较。

boolean equalsIgnoreCase(String anotherString)

将此 String 与另一个 String 比较,不考虑大小写。

byte[] getBytes()

使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。

byte[] getBytes(String charsetName)

使用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。

void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

将字符从此字符串复制到目标字符数组。

int hashCode()

返回此字符串的哈希码。

int indexOf(int ch)

返回指定字符在此字符串中第一次出现处的索引。

int indexOf(int ch, int fromIndex)

返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。

int indexOf(String str)

返回指定子字符串在此字符串中第一次出现处的索引。

int indexOf(String str, int fromIndex)

返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。

String intern()

返回字符串对象的规范化表示形式。

int lastIndexOf(int ch)

返回指定字符在此字符串中最后一次出现处的索引。

int lastIndexOf(int ch, int fromIndex)

返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。

int lastIndexOf(String str)

返回指定子字符串在此字符串中最右边出现处的索引。

int lastIndexOf(String str, int fromIndex)

返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。

int length()

返回此字符串的长度。

boolean matches(String regex)

告知此字符串是否匹配给定的正则表达式。

boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)

测试两个字符串区域是否相等。

boolean regionMatches(int toffset, String other, int ooffset, int len)

测试两个字符串区域是否相等。

String replace(char oldChar, char newChar)

返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。

String replaceAll(String regex, String replacement

使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。

String replaceFirst(String regex, String replacement)

使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。

String[] split(String regex)

根据给定正则表达式的匹配拆分此字符串。

String[] split(String regex, int limit)

根据匹配给定的正则表达式来拆分此字符串。

boolean startsWith(String prefix)

测试此字符串是否以指定的前缀开始。

boolean startsWith(String prefix, int toffset)

测试此字符串从指定索引开始的子字符串是否以指定前缀开始。

CharSequence subSequence(int beginIndex, int endIndex)

返回一个新的字符序列,它是此序列的一个子序列。

String substring(int beginIndex)

返回一个新的字符串,它是此字符串的一个子字符串。

String substring(int beginIndex, int endIndex)

返回一个新字符串,它是此字符串的一个子字符串。

char[] toCharArray()

将此字符串转换为一个新的字符数组。

String toLowerCase()

使用默认语言环境的规则将此 String 中的所有字符都转换为小写。

String toLowerCase(Locale locale)

使用给定 Locale 的规则将此 String 中的所有字符都转换为小写。

String toString()

返回此对象本身(它已经是一个字符串!)。

String toUpperCase()

使用默认语言环境的规则将此 String 中的所有字符都转换为大写。

String toUpperCase(Locale locale)

使用给定 Locale 的规则将此 String 中的所有字符都转换为大写。

String trim()

返回字符串的副本,忽略前导空白和尾部空白。

static String valueOf(primitive data type x)

返回给定data type类型x参数的字符串表示形式。

StringBuffer, StringBuilder:

当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象

StringBuffer 线程安全
StringBuilder 线程不安全

StringBuffer, StringBuilder的方法:

名称

描述

public StringBuffer append(String s)

将指定的字符串追加到此字符序列。

public StringBuffer reverse()

将此字符序列用其反转形式取代。

public delete(int start, int end)

移除此序列的子字符串中的字符。

public insert(int offset, int i)

将 int 参数的字符串表示形式插入此序列中。

replace(int start, int end, String str)

使用给定 String 中的字符替换此序列的子字符串中的字符。

数组:

dataType[] arrayRefVar;   // 首选的方法
dataType arrayRefVar[];  // 效果相同,但不是首选方法

创建数组:
arrayRefVar = new dataType[arraySize];
dataType[] arrayRefVar = {value0, value1, …, valuek};

日期时间:

java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象
使用当前日期和时间来初始化对象: Date()
接收从1970年1月1日起的毫秒数:Date(long millisec)

long getTime( )
void setTime(long time)
String toString( )

正则表达式:

Java 正则表达式和 Perl 的是最为相似的。
java.util.regex 包主要包括以下三个类:
- Pattern 类: pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。
- Matcher 类: Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。
- PatternSyntaxException:PatternSyntaxException 是一个非强制异常类,它表示一个正则表达式模式中的语法错误。

方法的重载:

如果你调用max方法时传递的是int型参数,则 int型参数的max方法就会被调用;
如果传递的是double型参数,则double类型的max方法体会被调用,这叫做方法重载;
就是说一个类的两个方法拥有相同的名字,但是有不同的参数列表。
Java编译器根据方法签名判断哪个方法应该被调用。
方法重载可以让程序更清晰易读。执行密切相关任务的方法应该使用相同的名字。
重载的方法必须拥有不同的参数列表。你不能仅仅依据修饰符或者返回类型的不同来重载方法。

构造方法:

当一个对象被创建时候,构造方法用来初始化该对象。构造方法和它所在类的名字相同,但构造方法没有返回值。
通常会使用构造方法给一个类的实例变量赋初值,或者执行其它必要的步骤来创建一个完整的对象。
不管你与否自定义构造方法,所有的类都有构造方法,因为Java自动提供了一个默认构造方法,它把所有成员初始化为0。
一旦你定义了自己的构造方法,默认构造方法就会失效。

可变参数:

方法的可变参数的声明如下所示:

typeName... parameterName

在方法声明中,在指定参数类型后加一个省略号(…) 。
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。

finalize() 方法:

Java 允许定义这样的方法,它在对象被垃圾收集器析构(回收)之前调用,这个方法叫做 finalize( ),它用来清除回收对象。