运算符与表达式
语句概括
if条件分支语句
switch开关语句
循环语句
break和continue语句
数据和for语句
运算符
1.算术运算符
2.关系运算符
3.布尔运算符(逻辑运算符)
4.字符串连接运算符
5.三元运算符
6.赋值运算符
*算数运算符
+求和
-相减
*乘积
/商
%求余
*关系运算符(二目运算符用来比较两个值的关系,运算结果是boolean或者true)
>
>=
<
<=
==
!=
*布尔运算符
&&逻辑与 -两边式子都为真,才为真
||逻辑或 -两边式子有一个为真,即为真
!逻辑非 -取反,真就是假,假就是真
^ 逻辑异或 -两边式子只要不一样就是真
&&短路与
||短路或
逻辑运算符要求式子两边都是布尔类型,并且最终结果也会是布尔类型
短路与与逻辑与是相同的,只是会出现短路现象,第一个表达式为false就会发生短路
短路或与逻辑或是相同的,只是会出现短路现象,第一个表达式为true就会发生短路
*字符串连接运算符
关于java中的“+”运算符
1.两个作用:求和 :数字+数字
字符串连接 :两边有一个是字符串就是字符串连接
*三元运算符
boolean sex=true;
char ss=sex? '男':'女';
sex =false;
ss =(sex?'男':'女');
System.out.println(ss);
*赋值运算符
不要将赋值运算符和关系运算符混淆,12=12是非法表达式,12==12的值是true
基本赋值运算符=
扩展的赋值运算符 +=
-=
*=
/=
%=
*自增自减运算符
自增,自减运算符 ++ -- 是单目运算符,可以放在操作单元之前,也可放在之后,操作元必须是一个整型或浮点型变量,作用是使变量的值增1或者减1
++x(表示在使用x的值之前,增1)
x++(在使用x的值之后,增1)
package Charpet3;
public class Plus {
public static void main (String [] args) {
int k = 10;
int l = 10;
k++;
++l;
System.out.println(k);
System.out.println(l);
int a = 10;
int b = a++;
System.out.println(a);
System.out.println(b);
int e = 100;
System.out.println(e++);
// System.out.println(--e);
}
}
package Charpet3;
public class Logic {
public static void main (String [] args) {
System.out.println(5>3&5>2);//true
System.out.println(5>3&5>6);//false
System.out.println(5>3|5>6);//true
System.out.println(!true);//false
System.out.println(false^true);//true
//短路与
int a=10;
int b=8;
System.out.println(ab);//false
System.out.println(a);//10
}
}
package Charpet3;
public class AssignValue {
public static void main(String [] args) {
int i =10;
System.out.println(i);//10
i=i+5;
System.out.println(i);//15
//扩展的赋值运算符
i+=5;
System.out.println(i);//20
byte b=19;
//b=b+5;编译器报错,运算结果是int类型,b是byte类型
b+=5;
// 不会报错,相当于byte b = (byte)(b+5);
}
}
package Charpet3;
public interface StringConnect {
public static void main(String [] args ) {
//在控制台输入10+20=30
System.out.println("10+20=30");
int a = 10;
int b = 20;
System.out.println(a+"+"+b+"="+(a+b));
}
}
java表达式就是用运算符连接起来的符合java规则的式子。
运算符的优先级决定了表达式中运算执行的先后顺序
System.out.println("HelloWorld");
由一个表达式构成一个语句,即表达式尾加上分号。例如赋值语句:
x=23;
可以用{}把一些语句括起来构成复合语句,例如:
{ z=123+x;
System.out.println("How are you");
}
一条分号一个一条语句,称作为空语句
控制语句分为条件分支语句,开关语句,循环语句
package语句和import语句与类,对象有关
条件分支语句按照语法格式可细分为三种格式
if (boolean){
若干语句;
}
在if 语句中,其中的复合语句中,如果只有一条语句,{}可以省略不写,但为了程序的可读性,最好不要省略
if(表达式){
若干语句;
}
else(表达式){
若干语句;
}
关键字if后面的小括号表达式一定要是boolean类型,当值为true时,执行紧跟着的复合语句,结束当前if-else语句的执行;当值为false,执行else跟着的复合语句,结束当前if-else语句的执行;
在if-else语句中,其中的复合语句如果只有一条语句,{}可以省略不写
if(){
}
else if(){
}
else {
}
首先计算第一个表达式的值,如果计算结果为true,则执行紧跟着的复合语句,结束当前if-else if-else语句的执行;如果执行结果为false,则继续执行第二个表达式的值;如果所有表达式的值都为false,则执行关键字else后面的复合语句,结束当前语句。
switch(表达式){
case 常量值1:
若干语句;
break;
case 常量值2:
若干语句;
break;
case 常量值3:
若干语句;
break;
default:
若干语句;
}
表达式的值可以为short byte int char
常量1-3 也是short byte int char,而且要互不相同。
Switch语句首先计算表达式的值,如果表达式的值和某个case后面的常量值相等,就执行改case里的若干语句直到碰到braek为止。若表达式的值不与任何case的常量值相等。执行default后面的若干语句。
package Charpet3;
import java.util.Scanner;
public class Example3_4 {
public static void main (String [] args) {
int number = 0;
System.out.println("输入正整数(回车确认)");
Scanner reader = new Scanner(System.in);
number = reader.nextInt();
switch(number){
case 9:
case 131:
case 12:
System.out.println(number+"是三等奖");
break;
case 209:
case 596:
case 27:
System.out.println(number+"是二等奖");
break;
case 875:
case 316:
case 59:
System.out.println(number+"是一等奖");
break;
default:
System.out.println(number+"未中奖");
}
}
}
把需要反复编写的代码放到循环体中,联合计算器共同控制这段需要反复编写的代码
for(初始表达式;布尔表达式;更新表达式){}
1.初始表达式 布尔表达式 更新表达式都不是必须写但是 ;是必须要写
2.初始表达式最先执行,并且只能执行一次
3.布尔表达式必须是 false true
4.for执行过程
执行初始表达式,只执行一次
判断布尔表达式true--执行循环体--更新表达式--布尔--
false 循环体结束
public class ForTest01 {
public static void main (String [] args ) {
for(;;){
System.out.println("死循环");
}
}
}
输出1-10内的所有奇数
public class ForTest03 {
public static void main (String [] args ) {
//输出1到10中的所有奇数
for (int i =1; i<=10;i+=2) {
System.out.println(i);
}
}
}
输出1-10内的所有偶数
public class ForTest03 {
public static void main (String [] args ) {
//输出1到10中的所有偶数
for (int i =2; i<=10;i+=2) {
System.out.println(i);
}
}
}
计算8+88+888+8888....的前12项和
package Charpet3;
public class Example3_5 {
public static void main(String [] args) {
long sum = 0,a=8,item=a,n=12,i=1;
for(i=1;i<=n;i++) {
sum = sum+item;
item = item*10+a;
}
System.out.println(sum);
}
}
1.语法结构
while(布尔值){
循环体
}
2.执行原理
判断布尔类型true--执行循环体
false--循环结束
死循环
public class WhileTest01 {
public static void main (String [] args ) {
while (true ) {
System.out.println("死循环");
}
}
}
编译报错
public class WhileTest01 {
public static void main (String [] args ) {
/*while (true ) {
System.out.println("死循环");
}
*/ //System.out.println("helloworld");语句永远无法访问编译报错
//int i = 10;
//int j = 3;
/*while (i>j ) {//编译器只检查语法不运行,变量的内存空间是在运行阶段开辟的,关系运算符在运行阶段才出现结果
//while语句其实不知道真假,程序简单脆弱
System.out.println("死循环");
}
System.out.println("helloworld");
*/
int i = 10;
int j = 3;
while (10>3 ) {//不是变量内存知道真假,所以进行编译,出现和第一种情况一样
System.out.println("死循环");
}
System.out.println("helloworld");
}
}
在循环体中可以使用break语句和continue语句,执行了break语句,当前循环结束;执行了continue,本次循环结束,不执行continue后面的语句,直接进入下一次循环。
for(声明循环变量:数组的名字){
...
}
声明循环变量的类型必须和数组的类型相同
翻译为:对于循环变量依次取数组的每一个元素的值
package Charpet3;
public class Example3_8 {
public static void main(String [] args) {
int a [] = {1,2,3};
char b [] = {'a','b','c','d'};
// for(int n = 0;n
可以使用该类创建一个对象
Scanner reader = new Scanner (System.in);
然后reader对象调用下列方法,读取用户在命令行输入的各种基本数据类型的数据
nextBoolean()
nextByte()
nextShort()
nextInt()
nextLong()
nextfloat()
nextDouble()
上述方法在执行时都会阻塞,等待用户在命令行输入数据回车确认。例如,如果用户在键盘输入一个byte取值范围的整数89,那么reader对象调用hasNextByte()是true
在键盘上输入数据时,经常让reader对象先调用hasNextXXX方法等待用户在键盘输入数据,然后调用nextXXX()方法获取用户输入的数据。
package Charpet3;
import java.util.*;
public class Example3_9 {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
double sum =0;
int m =0;
while(reader.hasNextDouble()) {
double x = reader.nextDouble();
m = m + 1;
sum = sum+x;
}
System.out.printf("%d个数的和为%f\n",m,sum);
System.out.printf("%d个数的平均值为%f\n",m,sum/m);
}
}