文章目录
一、注释
1、单行注释
以双斜杠“//”标识,只能注释一行内容,用在注释信息内容少的地方。
//单行注释
2、多行注释
包含在“/”和“/”之间,能注释很多行的内容。为了可读性比较好,一般首行和尾行不写注释信息。
/*
*多行注释
*多行注释
*多行注释
*/
3、文档注释
包含在“/**”和“*/”之间,也能注释多行内容,一般用在类、方法和变量上面,用来描述其作用。注释后,鼠标放在类和变量上面会自动显示出我们注释的内容。
/**
*文档注释
*可以注释多条内容
*/
二、基础数据类型
1、整数类型
整形 | 占用字节空间大小 | 取值范围 | 默认值 |
---|---|---|---|
byte | 1字节 | -128~127 | 0 |
short | 2字节 | -32768~327667 | 0 |
int | 4字节 | -2^31~ 2^31-1 | 0 |
long | 8字节 | -2^63~ 2^63-1 | 0L |
2、浮点类型
浮点型 | 占用字节空间大小 | 取值范围 | 默认值 |
---|---|---|---|
float | 4字节 | 10^38 | 0.0F |
double | 8字节 | 10^308 | 0.0 |
3、字符类型
字符型 | 占用字节空间大小 | 取值范围 | 默认值 |
---|---|---|---|
char | 2字节 | 0 ~ 65535 | ‘\u0’ |
4、布尔类型
布尔型 | 占用字节空间大小 | 取值范围 | 默认值 |
---|---|---|---|
boolean | 视情况而定 | true、false | false |
三、变量常量
在程序执行过程中,其值不能改变的量称为常量,其值能被改变的量称为变量。变量与常量的声明都必须使用合法的标识符,所有变量与常量只有在声明之后才能使用
常量
- 常量通常也被称为“final变量”。
- 常量在整个程序中只能被赋值一次。在为所有对象共享值时,常量是非常有用的。
- 在Java语言中声明一个常量,除了要指定数据类型外,还需要通过final关键字进行限定。
- enum定义常:
enum ConstantEnum {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}
- 普通定义常量:
public class ConstantClassField {
public static final String SUNDAY = "SUNDAY";
public static final String MONDAY = "MONDAY";
public static final String TUESDAY = "TUESDAY";
public static final String WEDNESDAY = "WEDNESDAY";
public static final String THURSDAY = "THURSDAY";
public static final String FRIDAY = "FRIDAY";
public static final String SATURDAY = "SATURDAY";
}
- final class定义常量:
public final class ConstantClassField {
public static final String SUNDAY = "SUNDAY";
public static final String MONDAY = "MONDAY";
public static final String TUESDAY = "TUESDAY";
public static final String WEDNESDAY = "WEDNESDAY";
public static final String THURSDAY = "THURSDAY";
public static final String FRIDAY = "FRIDAY";
public static final String SATURDAY = "SATURDAY";
}
变量
在Java语言中,所有的变量在使用前必须声明。
例:
int a, b, c; // 声明三个int型整数:a、b、c
int d = 3, e = 4, f = 5; // 声明三个整数并赋予初值
byte z = 22; // 声明并初始化z
String s = "runoob"; // 声明并初始化字符串s
double pi = 3.14159; // 声明了双精度浮点型变量 pi
char x = 'x'; // 声明变量x的值是字符 'x'
变量的命名并不是任意的,需要遵循一定的规则:
-
变量名必须是一个有效的标识符。
-
变量名不能重复。
-
应选择有意义的单词作为变量名。在命名变量名时,最好能通过变量名看出变量的内容,这样既能方便读者对程序的理解,增加可读性,又方便程序的维护,减轻程序维护人员的工作负担。
四、运算符
1、算术运算符
运算符 | 描述 |
---|---|
+ | 加法 相加运算符两侧的值 |
- | 减法 左操作数减去右操作数 |
* | 乘法 相乘操作符两侧的值 |
/ | 除法 左操作数除以右操作数 |
% | 取余 左操作数除以右操作数的余数 |
2、自增、自减运算符
运算符 | 描述 |
---|---|
++ | 自增 操作数的值增加1 |
- - | 自减 操作数的值减少1 |
示例:
public class selfAddMinus{
public static void main(String[] args){
int a = 3;//定义一个变量;
int b = ++a;//自增运算
int c = 3;
int d = --c;//自减运算
System.out.println("进行自增运算后的值等于"+b);
System.out.println("进行自减运算后的值等于"+d);
}
}
运行结果:
进行自增运算后的值等于4
进行自减运算后的值等于2
解析:
int b = a++;运算过程:a=a+1=4;b=a=4,最后结果为:b=4,a=4
int d = c- -;运算过程:c=c-1=2;d=c=2,最后结果为d=2,c=2
- 前缀自增自减法(++a,–a): 先进行自增或者自减运算,再进行表达式运算。
- 后缀自增自减法(a++,a–): 先进行表达式运算,再进行自增或者自减运算
示例:
public class selfAddMinus{
public static void main(String[] args){
int a = 5;//定义一个变量;
int b = 5;
int x = 2*++a;
int y = 2*b++;
System.out.println("自增运算符前缀运算后a="+a+",x="+x);
System.out.println("自增运算符后缀运算后b="+b+",y="+y);
}
}
运算结果:
自增运算符前缀运算后a=6,x=12
自增运算符后缀运算后b=6,y=10
3、关系运算符
运算符 | 描述 |
---|---|
== | 检查如果两个操作数的值是否相等,如果相等则条件为真。 |
!= | 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 |
< | 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 |
4、位运算符
运算符 | 描述 |
---|---|
& | 如果相对应位都是1,则结果为1,否则为0 |
| | 如果相对应位都是 0,则结果为 0,否则为 1 |
^ | 如果相对应位值相同,则结果为0,否则为1 |
〜 | 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 |
<< | 按位左移运算符。左操作数按位左移右操作数指定的位数。 |
>> | 按位右移运算符。左操作数按位右移右操作数指定的位数。 |
>>> | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 |
示例:
假设A=60(二进制:0011 1100)B=13(二进制:0000 1101)
A&B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
~A = 1100 0011
A<<2 = 1111 0000
A>>2 = 0000 1111
A>>> = 0000 1111
4、逻辑运算符
运算符 | 描述 |
---|---|
&& | 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 |
|| | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 |
! | 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为真,则逻辑非运算符将得到假。 |
短路逻辑运算符
当使用与逻辑运算符时,在两个操作数都为true时,结果才为true,但是当得到第一个操作为false时,其结果就必定是false,这时候就不会再判断第二个操作了。
5、赋值运算符
运算符 | 描述 |
---|---|
= | 简单的赋值运算符,将右操作数的值赋给左侧操作数 |
+= | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 |
-= | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 |
*= | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 |
/ = | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 |
(%)= | 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 |
<< = | 左移位赋值运算符 |
>> = | 右移位赋值运算符 |
&= | 按位与赋值运算符 |
^ = | 按位异或赋值操作符 |
| = | 按位或赋值操作符 |
6、条件运算符
运算符 | 描述 |
---|---|
(?:) | 条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。 |
示例:
variable x = (expression) ? value if true : value if false
五、流程控制
1、顺序结构
- Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行。
- 顺序结构是最简单的算法结构。
- 语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。
2、分支结构
- if分支语句
if(条件表达式){
//条件成立执行的代码语句
}
- if else双分支语句
if(条件表达式){
//条件成立执行的代码
}else{
//条件不成立执行的代码
}
- if else if多分支语句
if(条件表达式1){
语句1;
}else if(条件表达式2){
语句2;
}else if(条件表达式3){
语句3;
...
}else{
//上述条件都不成立时执行此代码
}
- 三元表达式
条件表达式 ? 表达式1 : 表达式2;
//如果条件表达式的结果为真,则返回表达式1点值;而如果条件表达式的结果为假,则返回表达式2的值。
- switch语句
switch(表达式){
case value1:
//表达式等于value1时要执行的代码
break;
case value2:
//表达式等于value2时要执行的代码
break;
default:
//表达式不等于任何一个value值时要执行的代码
}
六、循环
1、for循环
- 在程序中,一组被重复执行的语句被称为循环体,而能否继续重复执行,则取决于循环的终止条件。
- 循环语句是指由循环体和循环的终止条件造成的句子
- for循环主要用于把某些代码循环若干次,通常跟计数有关系
for(初始化变量;条件表达式;操作表达式){
//循环体
}
//初始化变量:其实就是用var声明一个普通的变量,并且这个变量通常是作为计数器使用。
//条件表达式:用来决定每一次循环是否继续执行,也就是循环的终止条件。
//操作表达式:每次循环最后执行的代码,经常用于更新计数器(递增或递减)。
举例:
for(var i = 1; i <= 31; i++){
console.log('今天是5月'+i+'日了!');
}
嵌套循环:
循环嵌套是指在一个循环语句中再定义一个循环语句的语法结构。像在一个for循环语句中, 再嵌套一个for循环,我们就称之为双重for循环。
举例:
for(var i = 1; i <= 3; i++){
console.log('这是第'+i+'次外层循环');
for(var j = 1; j <= 3; j++){
console.log('这是第'+i+'次里层循环');
}
}
2、while循环
while语句可以在条件表达式为真的前提下,循环执行指定的一段代码,直到表达式不为真时结束循环。
举例:
while(条件表达式){
//循环体代码
}
3、do while循环
- do…while语句其实是while语句的一个变体。
- 该循环会先执行一次代码块,然后对条件表达式进行判断,如果条件为真,就会重复执行循环体,否则退出循环
- do while循环语句至少执行一次循环体代码)
举例:
do{
//循环体代码
}while(条件表达式);