基础Java学习——运算符,表达式,语句

1,运算符和表达式

1,算术运算符和算术表达式
》1.加,减是连接两个操作元的运算符号,所以又叫二目运算符。
结合方向是从左到右,例如:2+3-4就是先得到5后减4,加减的数据是整数或者浮点数。
》2.乘除运算符也想通,用算术运算符和括号连接起来的式子叫做算数表达式。

2,自增自减运算符
自增自减是单目运算符。
++x(–x)就是先加一,在使用x
x++(x–)就是先使用x,再加一+

3,算数混合运算的精度
精度从低到高分别是
byte <short<char<int<long<float<double
故算术表达式中如果有精度高的,那么结果就是高精度的
5.0/2+10他的结果就是double型。
但是结果超过取值范围的表达式赋值给低精度的变量。

4,关系运算符与关系表达式
关系符是二目运算符。运算结果是boolean类型。

运算符优先级
>6
<6
>=6
<=6
==6
!=6

5,逻辑运算符与逻辑表达式

运算符优先级含义
&&11
1112
!2

关系符的优先级大于逻辑运算符,2>9&&9>2的结果是false,2>8||9>2的结果是true.

6,赋值运算符和赋值表达式
赋值运算符是二目运算符,左边必须是变量。例如x=100;y=true;
赋值表达式的值就是=左边变量的值
注意赋值运算符=不要和等号关系= =混淆。
12=12不合法12==12合法。

7,位运算符——&

1,按位与运算
a:00001
& b:10011
结果就是:00001
与运算只要对位都是1,那么结果对位就是1,除了这种情况对位结果都是0。
2,按位或运算——|
有1对位结果就是1,对位都是0时,结果是0.
3,按位非运算——~
对位不同就是1,相同就是0
4,按位异或运算——^
对位相同,则结果是0,否则是1.
有趣的是a^ b ^b==a,故我们可以用它来做密文。
例子:

public class 异或例子 {
    public static void main(String[] args) {
        char a1='十',a2='点',a3='进',a4='攻';
        char secret='A';
        a1=(char)(a1^secret);
        a2=(char)(a2^secret);
        a3=(char)(a3^secret);
        a4=(char)(a4^secret);
        System.out.println("密文:"+a1+a2+a3+a4);
        a1=(char)(a1^secret);
        a2=(char)(a2^secret);
        a3=(char)(a3^secret);
        a4=(char)(a4^secret);
        System.out.println("原文:"+a1+a2+a3+a4);
    }
}
结果:

密文:匀烸辚敺
原文:十点进攻

8,instanceof运算符
该运算符是二目运算符,左边的操作元是一个对象,右边的是一个类。
当左边的对象是右边的类或者子类创建的对象时,该结果就是TRUE,否则就是FALSE。

2,语句概述

1,方法调用语句
sout
2,表达式语句
x=12;
3,复合语句
用{}把一些语句包括起来的构成复合语句
{x=22+b;
sout(“hello”)}
4,空语句
一个分号也是一条语句;叫做空语句;
5,控制语句
它分为条件分支语句,开关语句,循环语句。
6,package语句和import语句
与类和对象有关

3,if条件分支语句

1,if语句

if语句的语法格式;
if(表达式){
若干语句;}
if语句的判断表达式的值,必须是boolean类型
结果是FALSE则停止执行,
正确时则继续执行。

将ABC的值从小到大排序。
public class lizi {
    public static void main(String[] args) {
        int a=9,b=5,c=7,t=0;
        if(b<a){
            t=a;
            a=b;
            b=t;
        }
        if(c<a){
            t=a;
            a=c;
            c=t;
        }
        if(c<b){
            t=b;
            b=c;
            c=t;
        }
        System.out.println("a="+a+"b="+b+"c="+c);
    }
}

	结果:
	a=5b=7c=9

2,if-else语句

这种语句的格式就是
if(表达式){
若干语句}
else{
若干语句}
如果表达式结果正确则继续执行if语句内的若干语句,
若为false则执行else内的若干语句。

public class 例子33 {
    public static void main(String[] args) {
        int math=65,chia=34;
        if(math>60){
            System.out.println("数学及格了");
        }
        else{
            System.out.println("数学笨蛋");
        }
        if(chia>60){
            System.out.println("语文很好");
        }
        else{
            System.out.println("语文笨蛋");
        }
    }
}

	结果:
	数学及格了
	语文笨蛋

3,if-else if-else语句
需要一次判断多个条件时,可以用到
每使用一个if-else就添加一个表达式。
格式如下:
if(表达式){
若干语句 }
else if(表达式){
若干语句}
else if(表达式)

else{
若干语句}

4,switch语句开关

1,switch语句中的“表达式”的值可以是byte,short,int,char型
switch语句执行首先应该是先执行switch语句内的表达式。
如果表达式得值,与CASE的值相等。
则执行对应case 后的若干语句。
直到遇到break为止。
若表达式得到的值,不和所有的case相同,则执行default后面的语句。
当然也可以不选择加入default语句,那么输入的不符合case的语句,
就不会有任何结果。
2,值得之一的是switch中的表达式的值可以是byte,short,int,char;但是不能是long类型

import java.util.Scanner;

class 例子3_4 {
    public static void main(String[] args) {
        /*
         *        ┏┓   ┏┓+ +
         *       ┏┛┻━━━┛┻┓ + +
         *       ┃       ┃
         *       ┃   ━   ┃ ++ + + +
         *       ████━████ ┃+
         *       ┃       ┃ +
         *       ┃  ┻     ┃
         *       ┃       ┃ + +
         *       ┗━┓   ┏━┛
         *         ┃   ┃
         *         ┃   ┃ + + + +
         *         ┃   ┃ Code is far away from bug with the animal protecting
         *         ┃   ┃ + 神兽保佑,永无bug
         *         ┃   ┃
         *         ┃   ┃  +
         *         ┃    ┗━━━┓ + +
         *         ┃        ┣┓
         *         ┃        ┏┛
         *         ┗┓┓┏━┳┓┏┛ + + + +
         *          ┃┫┫ ┃┫┫
         *          ┗┻┛ ┗┻┛+ + + +
         */
        int number=0;
        System.out.println("输入正整数,按回车确定");
        Scanner reader=new Scanner(System.in);
        number = reader.nextInt();
        switch(number){
            case 9:
            case 12:
            case 14:
                System.out.println(number+"三等奖");
                break;
            case 111:
            case 222:
            case 333:
                System.out.println(number+"二等奖");
                break;
            case 666:
            case 888:
                System.out.println(number+"一等奖");
                break;
            default:
                System.out.println(number+"啥也不是");
        }
//值得之一的是switch中的表达式的值可以是byte,short,int,char;但是不能是long类型
    }
}

结果:
输入正整数,按回车确定
111
111二等奖

5,循环语句

1,for循环语句
for语句格式
for (表达式1;表达式2;表达式3){
}

一般流程是:表达式1用来给变量赋值,也就是初始化;
表达式2就是一个判断,其值必须是boolean类型
表达式3将变量值更改,再次进入循环
知道表达式2出现false值,之后停止循环。
(自用图,可以借鉴)
在这里插入图片描述

例子:计算一个1+11+111+1111+…前12项的和的值

public class 例子3_5 {
    public static void main(String[] args) {
        long sum=0,a=1,item=a,n=12,i=1;
        //这里条件一就是a=1;
        //条件二是循环体n
        //条件三是i++;改变初始值,再次进入循环。
        for (i=1;i<=n;i++){
            sum=sum+item;
            item=item*10+a;
        }
        System.out.println(sum);
    }
}

2,while循环语句
while语句的语法格式:
while(表达式){
循环体;}

while语句流程

在这里插入图片描述

do-while语句流程

在这里插入图片描述
例子:用while语句实现1+1/2!+1/3!+…的前20项

public class 例子3_6 {
    public static void main(String[] args) {
        double sum=0,item=1;
        int i=1,n=20;
        while(i<=20){
            sum=sum+item;
            i=i+1;
            item=item*(1.0/i);
        }
        System.out.println("sum="+sum);
    }
}

结果:sum=1.7182818284590455

6, break和continue语句

break,continue语句格式就是break,continue加上分号组成的语句。
那么break语句和continue语句的区别在哪里?

  • break语句:

在一个循环中,加入他已经循环了几次了,在某一次循环中执行了break语句,那么整个循环语句就结束了。
可以这样说循环语句n=50,执行到11次使用了break,那么这循环执行到这里就结束了,后面的循环就不会执行了

  • continue语句:

以上面为例,在某次循环中执行了continue语句,那么本次循环就结束了,就是不在执行continue后的语句了,而是转入进行下一次循环了。假如第11次是continue的话,那么第11次循环就会跳出,或者说结束。进入第12循环继续。

下里是break流程图:

在这里插入图片描述

continue语句流程图

在这里插入图片描述

通过流程图可以直观的看到两者的区别
例子:

public class 例子3_7 {
    public static void main(String[] args) {
        int sum = 0, i, j;
        for (i = 1; i <= 10; i++) {
            if (i % 2 == 0) {
                //计算1+3+5+7+9
                System.out.println("这里使用了continue语句");
                continue;
            }
            sum = sum + i;
        }
        System.out.println("sum=" + sum);
        for (j = 2; j <= 20; j++) {
            //计算20以内的素数
            for (i = 2; i <= j / 2; i++) {
                if (j % i == 0)
                    System.out.println("这里使用了break语句");
                    break;
                }
                if (i > j / 2) {
                    System.out.println("" + j + "是素数");
                }
            }
        }

    }

结果:这里使用了continue语句
这里使用了continue语句
这里使用了continue语句
这里使用了continue语句
这里使用了continue语句
sum=25
2是素数
3是素数
这里使用了break语句
这里使用了break语句
这里使用了break语句
这里使用了break语句
这里使用了break语句
这里使用了break语句
这里使用了break语句
这里使用了break语句
这里使用了break语句

直观的可以看到结果如上

7,数组与for语句

前面学习了数组,这里学到for语句可以更好的遍历数组。
for(声明循环变量:数组的名字){
…}
循环变量的类型必须和数组的类型相同。这种形式类似于自然语言中的for each语句,也可以说就是循环变量,依次读取数组中的每一个元素的值。
例子:正常遍历和改进方式的遍历数组

public class 例子3_8 {
    public static void main(String[] args) {
        int a[]={1,2,3,4};
        char b[]={'a','b','c','d'};
        for(int n=0;n<a.length;n++){
            System.out.println("a"+n+"_"+a[n]);
        }
        for(int n=0;n<b.length;n++){
            System.out.println("b"+n+"_"+b[n]);
        }
        //改进遍历算法
        for(int i:a){
            System.out.println(i);
        }
        for(char ch:b){
            System.out.println(ch);
        }
    }
}

结果:
	a0_1
	a1_2
	a2_3
	a3_4
	b0_a
	b1_b
	b2_c
	b3_d
	
	1
	2
	3
	4
	a
	b
	c
	d

例子:前面用的是Scanner类,可以用该类创建对象
Scanner scanner=new Scanner(System.in);
用reader对象调用下列对象,读取用户在命令行输入的各种基本类型的数据
nextBoolean(),nextByte(),nextShort(),…等等等
每次调用该方法时,都会停下或者说阻塞,等待输入数据回车确定。
每次键盘输入数据时,reader调用hasNextDouble()等待用户在键盘输入数据,然后在调用nextDouble()获取数据

例子:

import java.util.Scanner;
public class 例子3_9 {
    public static void main(String[] args) {
        Scanner reader=new Scanner(System.in);
        double sum=0;
        int m=0;
        System.out.println("输入数据以回车结尾,且以end结尾");
        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);
    }
}

输入数据以回车结尾,且以end结尾
3
4
5
end
3数据的和12.000000
3的数据平均数是4.000000

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不是陈Eason

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值