JAVA语言基础(二)
- 运算符
1.1 逻辑运算符
1.2 位运算符
1.3 三元运算符 - 键盘录入
- 流程控制
3.1 顺序结构
3.2 选择结构
3.3 循环结构 - 方法
1.运算符
1.1逻辑运算符
- 逻辑运算符:逻辑运算符有&(并),|(或), ^(异或),!(非),&&(短路并),||(短路或)
- 逻辑运算符一般用于连接布尔变量(boolean)或布尔变量值(true or false)
- 逻辑运算符运算:
&(并):判断两边是否有 false 有false时 判断为 false 两边都是ture 判断为true
|(或):判断两边是否有true 有ture时 判断为true 两边都是false 判断为false
^(异或):相同为false 不同为ture
!(非):!true 为 false !false 为ture - &(并)和&&(短路并)的区别:
&:判断需要执行两边表达式或者值,如果左边判断为false,仍然需要执行右边的判断。
&&:判断可执行一边的值,如果左边为false,已经可以得出逻辑为false,此时不执行右边语句。但当左边为true时,无法判断此语句逻辑为false还是true,因此仍需执行右边语句进行判断。
最终结果一样。 - |(或)和||(短路或)的区别:
|:判断需要执行两边表达式或者值,如果左边判断为true,仍然需要执行右边的判断。
||:判断可执行一边的值,如果左边为true,已经可以得出逻辑为true,此时不执行右边语句。但当左边为false时,无法判断此语句逻辑为false还是true,因此仍需执行右边语句进行判断。(与&和&&相反)
最终结果一样
1.2位运算符
- 位运算符: &(与),|(或),^(异或) , ~(按位取反) , <<(左移) ,>>(右移) ,>>>(无符号右移)
- 位运算符是直接对其补码进行运算
- 位运算符的运算:
&:有0则0
|:有1则1
^:相同则0,不同则1
~:按位取反 0变1 1变0
(参考逻辑运算符) - ^的特点:一个数据被另一个数据位异或两次,该数本身不变。自己位异或自己是0
‘<<’:左移 空位补0,被移除的高位丢弃。
'>>'右移 被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,高位补1。
‘>>>’:无符号右移 被移位二进制最高位无论是0或者是1,空缺位都用0补
运算:
‘<<’: 把<<左边的数据乘以2的移动次幂 例如 10<<3 结果 10*2^3=80
‘>>’ : 把>>左边的数据除以2的移动次幂 例如 40>>3 结果 40/2^3=5
1.3三元运算符
-
三元(三目)运算符的格式:
(关系表达式) ? 表达式1 : 表达式2;
int a=(10>20)?30:50; a=50 -
运算流程:
计算关系表达式的值,如果为true, 运算后的结果是表达式1;
如果为false,运算后的结果是表达式2;
int a=(10>20)?30:50;
运算流程:判断10>20为false 执行后一个表达式a=50 -
实例:比较两个数最大值
public class MyPractice { public static void main(String[] args) { int a=20; int b=100; int max=a>b?a:b; System.out.println("The maximum is "+max); } }
2.键盘录入
-
键盘录入步骤:
a.导入包格式:
import java.util.Scanner;
位置:
在class上面。b.创建键盘录入对象
格式:
Scanner scanner=new Scanner(System.in);c.将数据导入对象中
格式:
int x=scanner.nextInt();
代码实现
import java.util.Scanner; //导入包
public class MyPractice {
public static void main(String[] args) {
System.out.println("Please input a number: ");
Scanner sc = new Scanner(System.in); //创建键盘录入对象
int x=sc.nextInt(); //将数据导入对象中
System.out.println("The number you input is: "+x);
}
}
3. 流程控制
- 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。
也就是说程序的流程对运行结果有直接的影响。
所以,我们必须清楚每条语句的执行流程。
而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。 - 流程控制语句的分类:
顺序结构
选择结构
循环结构
3.1 顺序结构
- 顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。
- 执行流程:
从上往下,依次执行。
3.2 选择结构
-
选择结构有 : if结构 和 switch结构
-
if 的三种格式:
if语句的格式1:
if(比较表达式或者是boolean类型的值) {
语句体;
}if语句的格式2:
if(比较表达式) {
语句体1;
}else {
语句体2;
}if语句的格式3:
if(比较表达式1) {
语句体1;
}else if(比较表达式2) {
语句体2;
}else if(比较表达式3) {
语句体3;
}
…
else {
语句体n+1;
} -
switch语句的格式
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
case 值3:
语句体3;
break;
…
default:
语句体n+1;
break;
}
执行流程:扫描表达式的值 根据表达式所给的值
执行相对应的case里的语句
如果与所有的case后的值不匹配
则执行default后的语句 -
switch语句注意事项:
a.switch表达式的取值:byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是String
b.case后面跟的是要和表达式进行比较的值
c.break表示中断,结束的意思,可以结束switch语句
d.case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的量
d.break尽量不省略 否则会出现case穿透 即执行完当前case语句后 会执行后续case内语句 直到switch结构内最后一条语句执行完
e.default可以放在任意位置 建议最后 -
if 和 switch 语句的应用:
if语句使用场景:
针对结果是boolean类型的判断
针对一个范围的判断
针对几个常量值的判断switch语句使用场景:
针对几个常量值的判断
3.3循环结构
- 循环结构有for循环和while循环 (while又分为 while和do…while)
- 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句
- for循环结构
for(初始化表达式语句;判断条件语句;控制条件语句) {
循环体语句;
}
执行流程:
a:执行初始化表达式语句
b:执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
c:执行循环体语句;
d:执行控制条件语句
e:回到B继续。 - while循环结构
初始化条件语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
执行流程:
a:执行初始化条件语句;
b:执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
c:执行循环体语句;
d:执行控制条件语句
e:回到b继续 - do…while循环结构
初始化条件语句;
do {
循环体语句;
控制条件语句;
}while(判断条件语句);
执行流程:
a:执行初始化条件语句;
b:执行循环体语句;
c:执行控制条件语句;
d:执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
e:回到b继续。 - 注意事项:
a:判断条件语句无论简单还是复杂结果是boolean类型。
b. do…while循环至少执行一次循环体。
而for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。
c.知道循环次数 用for循环
不知道循环次数 需要在循环体中设置循环变量 判断是否应该跳出循环时用while循环 - 控住跳转语句:
break;
countinue;
return;
a.break(中断):
用在选择结构switch语句和循环语句中,用于跳出单层循环;
b.continue(继续):
用在循环语句中,用于跳出一次循环,执行下一次操作
c.return(返回):
return 就是退出一个方法。
跳转到上层调用的方法。
4. 方法
-
方法就是完成特定功能的代码块
在很多语言中都有函数的定义,但是在JAVA语言中,将其称之为方法。 -
方法的格式
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2 …){
方法体;
return 返回值;
}
例如:
public static void print123(){
System.out.println(“123”);
return 0;
} -
方法格式详细说明
(1): 修饰符 目前使用 public static
(2): 返回值类型 用于限定返回值的数据类型
(3): 方法名 就是一个名称,它的存在是为了方便我们调用方法
(4): 参数类型 限定调用方法时传入参数的数据类型
(5): 参数名 是一个变量,接收调用方法时传入的参数。这个参数其实有一个专业的名词,被称之为形式参数,它的作用是用来接收实际参数的.
(6): 方法体 完成功能的代码
(7): return 结束方法以及返回方法指定类型的值
(8): 返回值 就是功能的结果,由return带回,带回给调用者 -
注意事项:
a. 方法不调用不执行
b. 方法与方法是平级关系,不能嵌套定义
c. 方法定义的时候参数之间用逗号隔开
d. 方法调用的时候不用在传递数据类型
e. 如果方法有明确的返回值,一定要由return带回一个值 -
方法的重载:
方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。(方法重载就是方法名称重复,加载参数不同。)
注意事项:
a.方法名一定要相同。
b.方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法体。
1)如果参数个数不同,就不管它的参数类型了
2)如果参数个数相同,那么参数的类型必须不同。
c.方法的返回类型、修饰符可以相同,也可不同。 -
方法重载举例:
void receive(int i) {
System.out.println(“Received one int data”);
System.out.println(“i=”+i);
}void receive(float f) {
System.out.println(“Received one float data”);
System.out.println(“f=”+f);
}void receive(String s) {
System.out.println(“Received a String”);
System.out.println(“s=”+s);
}public static void main(String [] args){
MethodOverloading m = new MethodOverloading();
m.receive(3456);
m.receive(34.56f);
m.receive(“方法重载”);
}