目录:
1、运算符
2、语句
3、函数
4、数组
进击的小仙
1. 运算符
运算符按照操作数的个数可以分为:单目运算、双目运算、三目运算
按照功能可以分为:逻辑运算符、位运算符、关系运算符、赋值运算符、算术运算符、其他。
1.1、算术运算符
- 单目运算: ~ (按位取反)、!(取非)、- (负号运算)、++ (自增)、-- (自减)
- 双目运算: + - * / %(取余)
- 三目运算:
a > b ? true : false ;
说明:当a大于b的时候,运算结果为true,否则结果为false。
这整个运算符包括一个关系运算符(可以是“>”"<""!="等等),一个“?”,一个“:”,冒号前后需要有两个表达式或者是值或者是对象。
int x = 3 , y ;
y = (x - 1 ) ? 100 : 200 ;
若 x >1 则 y =100 ;
好处:简化了 if ... else 代码
弊端:运算完一定有一个结果,if ... else 不用
1.2、关系运算符
== (等于)、!=(不等于)、> (大于)、< (小于)、>=(大于等于)、<= (小于等于)
1.3、位运算
& (与)、| (或)、~ (非)、^ (异或)
1011 & 1100 = 64
先将数转换成二进制,与运算之后,转换回十进制。
1.4、逻辑运算符
&& (双与)、|| (或)、 !(非)
1.5、赋值运算
= 、 += 、 -= 、 *= 、 /= 、 %= 、 &= 、 |= 、 <<= 、 >>=
1.6、其他
- instanceof 实例判断
- 位移
<< (带符号左移)、>> (带符号右移)、>>>(无符号右移)、<<<(无符号左移)
1、用最高效的方式算出2乘以8(位运算)
2<<3
2、不用第三个变量的情况下,对两个证书变量的值进行互换
int n =3 ,m=8;
n = n + m ; // 11 = 3 + 8
m = n - m ; // 3 = 11 - 8
n = n -m ; // 8 = 11 - 3
2. 语句
2.1、条件控制语句
- if语句
if (条件){
条件成立执行的代码
}
- if ... else 语句
if (条件){
条件成立执行的代码
}else{
条件不成立执行的代码
}
- 多重if语句
if(条件1){
条件1成立时执行的代码
}else if (条件2){
条件2成立时执行的代码
}else{
条件1和条件2都不成立时执行的代码
}
- 嵌套if语句
if(条件1){
if (条件2){
代码块1
}else{
代码块2
}
}else{
代码块3
}
- switch语句
switch (表达式){
case 值1:
代码块1;
break;
case 值2:
代码块2;
break;
case 值n:
代码块n;
break;
default:
默认代码块;
}
注意:上面的表达式只接受四种数据类型:byte 、short 、 int 、 char,jdk1.7之后可以作用在String上
2.2、循环控制语句
- while语句
while (条件判断){
循环操作代码块
}
- do...while语句
do{
循环操作代码块
}while(条件判断)
与while语句不同的的是比他多执行一次循环操作代码块。
- for语句
for (循环变量初始化;循环条件;循环变化){
循环操作代码块
}
注意:
括号中的三个表达式都可以省略,但是分号不可以省略。
1、循环变量初始化省略,可将循环变量的初始化放到循环语句上面
2、循环条件省略会导致死循环,要注意
3、循环变量的变化省略,可以将循环变量变化放到循环操作代码块里边。
- 高级for循环
for ( 变量数据类型 变量名 :遍历的对象){
循环体
}
- for 与 while的不同之处
需要定义循环增量的时候我们选择用for语句。 - 最简单的无限循环表达:
1、for ( ; ; ){ 循环代码块 } ;
2、while (true) { 循环代码块 } ;
- break 与 continue
break是跳出循环体,continue是继续,就是结束当次循环进入下个循环。
break语句:应用于 条件结构、循环结构
continue语句:应用于 循环结构
离开应用范围无意义;两个单独存在下方都不能有语句;加标号可以控制结束当次外循环操作,进入下一个循环。
3. 函数
3.1、主函数
public static void main (String[] args) { }
主函数时固定格式的,被虚拟机识别,而且只识别这个。
public
:表示该函数访问权限最大
static
:表示函数随着类的加载就存在
void
: 主函数无具体返回值类型
main
: 非关键字,但是可以被Jvm识别
String[] args
:函数的参数,一个字符串类型的数组,虚拟机调用主函数时,传入的参数是(new String[0])
3.2、构造函数
构造函数的作用是给对象初始化。
分析事物时,该事物存在具备一些特性或行为,则将这些内容定义在构造函数中。
构造函数在写法上与一般函数的不同之处在于:
- 函数名与类名一致
- 无返回值类型
- 无需return语句
一个类中多个构造函数之间以重载的形式出现。
1、对象一建立即调用与之对应的构造函数,比如生活中,小孩一出生就会哭。
2、若类没有定义构造函数,系统就会默认给该类加一个空参数的构造函数,如果有定义就没有默认的构造函数。
3、构造函数和一般函数在运行上的不同在哪里?
-- 构造函数:对象一建立就执行,对对象进行初始化。
-- 一般函数:在调用的时候才执行,是给对象添加对象具备的功能。(比如,因而会吃饭,但并不是一直不停地在吃的。)
4、一个对象建立,构造函数只运行一次,一般方法可以被对象调用多次。
3.3、构造代码块
构造代码块也是用来给对象进行初始化的。
对象一建立就执行,且优先于构造函数执行。
构造代码块与构造函数的区别:
1、构造代码块给所有对象进行初始化
2、构造函数给对象初始化。
3.4、函数的重载和重写
- 重载
重载是一个类中多态性的表现。
1、参数类型、个数、顺序至少有一个不同
2、不能重载只有返回值不同的方法名
3、存在于父类和子类、同类中 - 重写
重写是子父类之间多态性的表型。
1、方法名、参数、返回值相同
2、子类方法不能缩小父类方法的访问权限
3、子类方法不能抛出比父类方法更多的异常
4、存在于父类和子类之间
5、被final修饰的方法不能被重写
4. 数组
数组是同一类型数据的集合
- 格式1:
int[] arr = new int[5];
- 格式2:
int[] arr = new int[]{3,5,1,7};
int[] arr = {3,5,1,7};
数组的常见异常:空指针异常(NullPointerException),数组角标越界异常(ArrayIndexOutOfBoundsException)
网友评论