基础语法
Java语言出现于1991年,JDK1.0版本正式发布于1995年
Java之父:James Gosling(詹姆斯•高斯林)
Java是一种面向对象的编程语言
Java语言是一种编译解释型语言
Java语言是基于Java虚拟机运行,因此Java语言可以实现跨平台
Java的GC垃圾回收器
注释
注释就是说明解释程序的文字,提高代码的阅读性。
注释格式:
- 单行注释://注释文字
- 多行注释: /* 注释文字 */
- 文档注释: /** 注释文字 */
标识符
java所有的组成部分都需要名字,类名、变量名、以及方法名都被称为标识符
java标识符注意事项:
- 所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线()开始
- 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线()或数字的任何字符组合
- 关键字不能用作标识符
- 标识符是大小写敏感的
- 合法标识符举例:age、$salary、_value、__1_value
- 非法标识符举例:123abc、-salary
关键字
关键字:被Java语言赋予了特殊含义的单词
关键字中所有字母都小写
数据类型
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
数据类型分类
数值类型大小
注意:
long num = 12345254245L
float f = 23242.56F
常量与变量
常量
常量就是一个固定值,不能改变的量。在java中用 final 标记,声明方式和变量类似
final double PI = 3.1415927;
通常常量名都是使用大写字母表示。
常量分类
1、整数常量。所有整数
2、小数常量。所有小数
3、布尔(boolean)型常量。较为特有,只有两个数值。true false。
4、字符常量。将一个数字字母或者符号用单引号( ' ' )标识。
5、字符串常量。将一个或者多个字符用双引号(“ ”)标识。
6、null常量。只有一个数值就是:null.
对于整数:有四种表现形式
二进制:0,1 ,满2进1.
八进制:0-7 ,满8进1. 用0开头表示。
十进制:0-9 ,满10进1.
十六进制:0-9,A-F,满16进1. 用0x开头表示。如下
int decimal = 100;
int octal = 0144;
int hexa = 0x64;
变量
变量类型:
- 局部变量:类的方法中的变量
- 实例变量:独立于方法之外的变量,没有使用static修饰
- 类变量:独立于方法之外的变量,用static修饰
public class VariableTest{
static int num=0; //类变量
String str = "Hello"; // 实例变量
public void method(){
int a=0; // 局部变量
}
}
命名规范
类名
a)类的作用英文单词组成(见名知意)
b)类名首字母要大写,如果有多个单词构成则每个单词的首字母都大写(大小写混排)
c)类名可以由“字母”、“数字”、“_”和“$”组成,但是不能够以数字开头
d)类名允许使用中文,但是不提倡使用
包名:多单词组成时所有字母都小写。
xxxyyyzzz
类名接口名:多单词组成时,所有单词的首字母大写。
XxxYyyZzz
变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。
xxxYyyZzz
常量名:所有字母都大写。多单词时每个单词用下划线连接。
XXX_YYY_ZZZ
运算符
特殊符号说明
&&:
和&运算结果是一样的,但是运算过程有点小区别。
&:无论左边的运算结果是什么,右边都参与运算
&&:当左边为false时,右边不参与运算
||:
和|运算结果是一样的,但是运算过程有点小区别。
|:无论左边的运算结果是什么,右边都参与运算
||:当左边为true时,右边不参与运算
位运算符
>>>:无符号右移位运算符
3<<1=6 //相当于 3*2^1=6
24>>3=3 //相当于 24/(2^3)=3
k >>>3 //右移n位(二进制右面去掉n位,左边补上个0)
a=a^b^b //异或两次同一个值等于原来的数
// -9 : 11111111 11111111 11111111 11110111.
// 9 : 00000000 00000000 00000000 00001001.
// 有符号右移
// -9>>3: [111]11111111 11111111 11111111 11110.
// 9>>3: [000]00000000 00000000 00000000 00001
// 无符号右移
// -9>>>3:[000]11111111 11111111 11111111 11110.
// 9>>>3: [000]00000000 00000000 00000000 00001
类型转换
- 自动类型转换(也叫隐式类型转换,低转高)
- 强制类型转换(也叫显式类型转换,高转低)
表达式的数据类型自动提升
所有的byte型、short型和char的值将被提升到int型。如下
//自动类型转换
byte b = 3;
int x = 4;
x = x + b;//b会自动提升为int类型进行运算。
//强制类型转换
byte b = 3;
b = (byte)(b+4);//强制类型转换,强制将b+4的结果转换为byte类型,再赋值给b。
System.out.println(‘a’) //结果 a
System.out.println(’a’+1) //结果 98
short s=3;
s+=4; //赋值运算,底层自动做了强转动作,自动完成
// s=s+4; //算术运算,会丢失精度,需强转,否则编译出错
转义序列
前面有反斜杠(\)的字符代表转义字符,它对编译器来说是有特殊含义的。
转义序列 | 描述 |
\t | 在文中该处插入一个tab键 |
\b | 在文中该处插入一个后退键 |
\n | 在文中该处换行 |
\r | 在文中该处插入回车 |
\f | 在文中该处插入换页符 |
' | 在文中该处插入单引号 |
" | 在文中该处插入双引号 |
\ | 在文中该处插入反斜杠 |
流程控制
流程控制语句用来控制程序的执行流程。
基本结构分类
- 顺序结构
- 选择结构
- 循环结构
顺序结构
程序默认的结构,自上而下的执行代码
选择结构
if 单选择结构
一个if语句包含一个布尔表达式和一条或多条语句
if(x<20){
System.out.print("这是 if 语句");
}
if - else 双选择结构
if 语句后面可以跟 else 语句,当if语句的布尔表达式值为 false 时,else 语句块会被执行。
int x=20;
if(x<20){
System.out.print("这是 if 语句");
}else{
System.out.print("这是 else 语句");
}
if...else if...else 多选择结构
if 语句后面可以跟 else if…else 语句,这种语句可以检测到多种可能的情况。public class Test{
public class Test{
public static void main(String []args){
int x=20;
if(x==10){
System.out.print("value of X is 10");
}else if(x==20){
System.out.print("value of X is 20");
}else if(x==30){
System.out.print("value of X is 30");
}else{
System.out.print("这是 else 语句");
}
}
}
switch结构
switch 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
switch(expression){
case value :
//语句
break; //可选
case value :
//语句
break; //可选
//你可以有任意数量的case语句
default : //可选
//语句
}
switch 语句有如下规则:
- switch 语句中的变量类型只能为 byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。
- switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。
- case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。
- 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到break语句出现才会跳出 switch 语句。
- 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。
- switch 语句可以包含一个 default 分支,该分支必须是 switch 语句的最后一个分支。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。
循环结构
Java中有三种主要的循环结构:
- while循环
- do…while循环
- for循环
while循环
public class Test{
public static void main(String []args){
int i=0;
while(i<10){
System.out.println("Value of i:" + i);
i++;
}
}
}
do…while循环
public class Test{
public static void main(String []args){
int i=0;
do{
System.out.println("value of i:" + i);
i++;
}while(i<10);
}
}
注:do…while循环至少会执行一次
for循环
for循环执行的次数是在执行前就确定的。
public class Test{
public static void main(String[] args){
for(int i=0; i<10; i++){
System.out.println("value of i:" + i);
}
}
}
增强for循环
主要用于数组的增强型for循环。
public class Test{
public static void main(String []args){
int [] numbers = {1,2,3,4,5};
for(int i:numbers){
System.out.print(i + "\t");
}
}
}
break关键字
break主要用在循环语句或者switch语句中,用来跳出整个语句块
public class Test{
public static void main(String[] args){
int[] numbers = {1,2,3,4,5};
for(int i: numbers){
if(i == 3){
break;
}
System.out.println(x);
}
}
}
//结果
1
2
continue关键字
continue适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。
public class Test{
public static void main(String[] args){
int[] numbers = {1,2,3,4,5};
for(int i: numbers){
if(i == 3){
continue;
}
System.out.println(i);
}
}
}
//结果
1
2
4
5