目录
1、 运算符
1.1 算术运算符
1.2 比较运算符
1.3 逻辑运算符
1.4 赋值运算符
1.5 条件运算符
1.6 位运算符(bit位)
1.7 表达式的运算顺序
2、控制语句
2.1 控制台输入
2.2 if 语句 和 switch 语句
2.3 循环语句
2.4 break 和 continue
3、 方法
1、 运算符
1.1 算术运算符
符号:+,-,*,/,%,++,--;
注:加法运算有加法和连接两个作用。
单独的x++,x--,--x,x++是没有任何区别的。
在混合运算中++在前先自增,++在后后自增。
public class Main(){
public static void main(String[] args){
int x = 3,y;
x++; //x = x+1;
++x; //x = x+1;
y = x++ + 1; //x = 6,y = 6;先进行运算,在进行自增。
x = 5;
y = ++x + 1; //x = 6,y = 7;先进行自增,后运算。
}
}
1.2 比较运算符
符号:>,<,==,>=,<=,!=;
1. >,<,>=,<=,只能进行数值之间的比较。
2. ==,!=,也能进行数值之间的比较,还可以进行逻辑值之间的比较,引用类型之间的比较。
1.3 逻辑运算符
符号:!,&,|,&&,||,^;
&,&& 表达式中有一个false,结果为false。只要出现第一个false时,整个表达式就会出现短路。(即前面如果出现false,后面的都不进行执行)。
| 逻辑或 表达式出现一个true,结果为true;
|| 短路或 表达式中有一个true,结果为true。当出现第一个true、发生短路,结果为true。(可以执行后面的表达式)
! 逻辑非 取反
^ 异或 相同为false,不同为true;
注:^,|,&,都可以进行位运算
1.4 赋值运算符
符号:=,+=,-=,*=,/=,%=;
将右边的值赋给左边。
+=,-=,*=,/=,%= (赋值运算(隐式的类型转换))
public class Main {
public static void main(String[] args) {
short s = 3;
s = (short)(s+2); //s+2 上升为int类型
s += 3;
}
}
1.5 条件运算符
符号:(条件表达式)?表达式1:表达式2
当结果为true,执行表达式1;
结果为false,执行表达式2。
public class Main{
public static void main(String[] args) {
int x = 4;
System.out.println("value is " + ((x>4) ? 99:9));
}
}
//value is 9.0 默认类型转换(double型)
//
1.6 位运算符(bit位)
符号:<<,>>,>>>,&,|,~,^;
- << 左移一位 (* 2) a<<1 二进制比特位向左移一位
- >> 右移一位 (/2) a>>1 二进制比特位向右移一位
- >>>右移一位 (/2) a>>>1 二进制比特位向右移一位,无符号右移,负数时,移位后补0;
- & 例:0100&0011 result:0000 0
- | 例:0100|0011 result:0111 7
- ~ 例: ~0100 result: 1011 -5
- ^ 例:0100^0011 result: 0111 7
1.7 表达式的运算顺序
- 优先级与求值顺序无关。如a+b && b*c,虽然*优先级最高,但这个表达式求值顺序是从左到右。
- 优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。
- 相同优先级中,按结合性进行结合。大多数运算符结合性是从左到右,只有三个优先级是从右至左结合的,它们是单目运算符(++,--等)、条件运算符、赋值运算符。
- 基本的优先级需要记住:先算术运算,后移位运算,最后位运算。请特别注意:1,逻辑运算最后结合。
2、控制语句
2.1 控制台输入
用户与程序进行交互,使用Scanner类。
作用:向程序中实现输入程序。
注:仅在java SE测试程序时使用。
通过类去创建一个对象(具体的可以使用的对象在内存中存储)
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入姓名:");//读入为字符串类型
String name = scanner.next();
System.out.println("请输入年龄:"); //读入为一个整数
int age = scanner.nextInt();
System.out.println("请输入性别:"); //读入为字符串
String sex = scanner.next();
System.out.println("姓名:" + name);
System.out.println("年龄:" + age);
System.out.println("性别:" + sex);
}
}
2.2 if 语句 和 switch 语句
- if (条件) {执行语句}
- if(条件){ 真,执行语句1 } else { 假,执行语句2 } ,满足一个条件,流程自动停止。
- if(条件){} else if{} else{};
- 多路选择:switch语句(break可不加)
switch(表达式){
case value1: 语句1;break;
case value2: 语句2';break;
case value3: 语句3;break;
default:默认代码块;
}
表达式:byte,short,int,char,枚举类型(enum),string
注:表达式和value值类型相同,只能用常量表示,不能重复。
- case后面的语句块执行完成后,如果没有break结束,则继续向下进行执行下一个case语句,直到执行到default语句。
- 如果没有与表达式匹配的选项,则执行default语句,没有default语句,则直接结束。
相同:多路分支选择,switch可以实现,if也可以实现。
不同:if 的条件更加灵活,而switch语句适用于一些固定的选项,如星期,月份等,在固定的选项中效率高。
2.3 循环语句
满足某种条件,一致重复执行某种事件。
循环语法格式:
循环变量初始化;进入循环的条件;循环体(循环中要执行的代码);循环变量的更新。
- while(循环条件){ 循环体} 先条件判断,不成立不能进入循环体中。
- do{ 循环体 }while(循环条件) 至少执行一次。先执行,后判断。
- for(变量初始化;条件;更新变量){ 循环体 } 变量初始化执行一次。
2.4 break 和 continue
1. 死循环
- while(true){
}
- for(; ;){ }
2. break: 终止循环(只能终止当前所在层循环)
3. continue:跳过某一次循环
4.循环嵌套;
public class Main {
public static void main(String[] args) {
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
System.out.print("*");
}
System.out.println();
}
//在内层循环中,终止外层循环。为循环定义一个标记(outer,label等自定义标签),在命名规则下命名。
outer: for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
if(j == 3){
break outer;
}
}
}
}
3、 方法
定义:类似于其他语言的函数(如:C语言),来解决某一问题,而编写的代码集合。
目的:在程序中多次的调用或使用
注:属于类或对象
语法格式:[访问权限修饰符 修饰符 返回值类型] 方法名([数据类型 参数名]){
//语句
[ return 返回值; ]
}
访问权限修饰符:public(公共的),private(私有的),protected 和 default;
形参:数据类型 参数名(可以自己进行定义)
方法名:可以自定义;(最好见文知义)
static:
public static void pea(){
int i = 5,
System.out.print(i);
}
//调用方式:类名 方法名();
//类名:Demo; Demo.pea();
不使用static 修饰,方法属于对象,需要通过对象来进行调用
public void display(){
int b = 10;
System.out.print(b);
}
//调用方式:类名 name = new 类名();
// name.方法名();
// 类名为Demo Demo demo = new Demo();
// demo.display();
void: 表示方法无返回值。
注:如果方法有返回值,必须声明返回值的类型。
return 值,是否有值:
注:有值的时候,从方法中向调用处返回一个结果;后面没有值的时候,只表明方法终止,不表示方法有返回值。
//有void
public void display(int sum){
int i = 1,j = 6;
sum = i+j;
System.out.print(i);
}
//无void
public int test(int a,int b){
int c = a+b;
return c;
}
//return没有值
public void test(int i){
int sum = 0;
for (int j = i; j < 10; j++) {
sum += j;
System.out.print(sum);
if(j == 8){
return;
}
}
}
//此处return表示在此处终止(后面没有值的时候,只表明方法终止,不表示方法有返回值)