Java基础及控制语句

Java基础及控制语句

运算符

算数运算符

Java中的算数运算符与数学中运算符效果类似

运算符描述
+加法运算
-减法运算
*乘法运算
/除法运算
%取模(余)运算:左操作数除以右操作数的余数
++自增:操作数的值自增1
自减:操作数的值自减1

想必各位能从小学毕业的高材生应该可以get到其余四个(+、-、*、/)是怎么用的吧【滑稽】。

关系运算符

关系运算符用来对两个操作数进行比较,结果为真则返回true,结果未假则反回false

运算符描述返回值(a=10,b=20)
<小于a<b => true;b<a =>false
>大于a>b => false;b>a =>true
==等于a==b => false
<=小于等于a<=b => true;b<=a =>false
>=大于等于a>=b => false;b>=a =>true
!=不等于a!=b => true

逻辑运算符

运算符描述返回值
&&逻辑与运算符两边都为真则返回true,否则返回false
||逻辑或运算符只要有一边为真就返回true,否则返回false
!逻辑非运算符反转操作数结果,即当!(2>1) =>false

注:

&&||的短路特性:

  • 表达式1 && 表达式2中,当表达式1的结果为false时,则不去执行表达式2,因为当表达式1的结果为表达式1 && 表达式2一定为
  • 同样的在表达式1 && 表达式2中,当表达式1的结果为true时,则不去执行表达式2,因为当表达式1的结果为表达式1 && 表达式2一定为

赋值运算符

运算符描述
=把右边的值赋给左边
+=加右边的值并赋给左边,a += b相当于a = a+b
-=减右边的值并赋给左边,a -= b相当于a = a - b
*=乘右边的值并赋给左边,a *= b相当于a = a * b
/=除以右边的值并赋给左边,a /= b相当于a = a / b
%=对右边的值取模并赋给左边,a %= b相当于a = a % b

位运算符

位运算符是对二进制数据进行操作

运算符描述
按位与操作符,当且仅当两个操作数的某一位都非0时候结果的该位才为1。
|按位或操作符,只要两个操作数的某一位有一个非0时候结果的该位就为1。
^按位异或操作符,两个操作数的某一位不相同时候结果的该位就为1。
按位补运算符翻转操作数的每一位。
<<按位左移运算符。左操作数按位左移右操作数指定的位数。
>>按位右移运算符。左操作数按位右移右操作数指定的位数。

例:

/**
* 15 => 0000 1111
* 60 => 0011 1100
*/
A = 0000 1111;
B = 0011 1100;
-------------------
A & B = 0000 1100  //12
A | B = 0011 1111  //63
A ^ B = 0011 0011  //51
~ A = 1111 0000  //240
A << 2 = 0011 1100  //60
B >> 2 = 0000 0011  //3

输入&输出

输出

Java输出语句除了看起来有点长其实并没有什么难理解的,它常用的也就三种:

  • 不换行输出:System.out.print()

  • 换行输出:System.our.println()

  • 格式化输出:System.out.printf()

    格式字符描述
    %c单字符
    %s字符串
    %d十进制整数
    %f十进制浮点数
    %o八进制数
    %u无符号十进制数
    %x十六进制数
    %%百分号

注:

  • 在输出语句中’'中只能是单字符,""里可以装字符串

  • 在输出语句中,两个数字类型中间的+是算数运算,字符型和数字型中间+表示字符串的拼接,字符串之后所有+都标识字符串拼接

    System.out.println(5 + 7);  //输出 =>  12
    System.out.println(5 + 7 + '元');  //输出 =>  12元
    System.out.println("¥" + 5 + 7);  //输出 =>  ¥57
    System.out.println("我爱" + "粉色的" + "毛爷爷")  //输出 =>  我爱粉色的毛爷爷
    

输入

Java的并不像C语言、Python语言那样 那样提供现成的键盘输入方法,但我们仍有三种方法可以实现键盘输入。在这里我们来聊聊相对最简单,最强大的一种方法——通过Scanner类实现键盘输入。

因为是通过Scanner类来实现的,所以我们要先导入它。就像要用别人家的锅做饭,你得先把锅借回来吧,别杠哈,我不会让你用我的锅子在我家给你自己做饭的,电费不要钱吗?蹭饭更别想,敢提就找专业团队给你抬走。

导入Scanner以后还是不能马上用,因为类有了,还得实例化成对象才可以用。毕竟锅有了你得通电、加柴,同燃气啊。

所以代码是这样的:

import java.util.Scanner;  //导入Scanner类

public class Study{
    public static void main(String args[]){
        Scanner scan = new Scanner(System.in);  //对象实例化,注意System首字母大写
        //接下来就可以使用了
        System.out.println("请输入文本:");
        num = scan.next();
        Sysrtem.out.println("您输入的内容:")
    }
}

这段代码执行的结果:

javac Study.java
java Study
请输入文本:
鹤径 青蚨
您输入的内容:
鹤径

显然这里并没用将键盘输入的结果全部打印出来,这时,有请背锅侠:next()方法。

  • next()方法

    • 对于next()来说,一定要得到有效字符输入后才可以结束。(出鞘必见血,歘歘歘 ( ‵▽′)ψ )
    • next()会自动去掉有效字符前的空白。(魔剑表示只喝血,喂它水是什么鬼 (艹皿艹 ) )
    • next()将有效字符后的空白当作分隔符或结束符。(我都喝到血了,还想我喝水,拜拜嘞您,不伺候了,后面有啥我也不要了)
  • nextLine()方法

    nextLine()就乖多了。

    • nextLine()方法以回车作为结束符,也就是说nextLine()会接收回车前的所有东西包括空格。

next()nextLint()接收到的都是字符串,如果这时需要使用他们接受到字符数进行运算就需要通过类型转换将其转换成所需要的数据类型。或者使用别的方法直接接收所需要的数据类型。

  • nextByte()nextShort 、()nextInt()nextLong()nextFloat()nextDouble()

  • next后跟相应的数据类型

  • 注:

    • 以上六个方法如果接收到类型不匹配的数据会报错,所以变量接收前最好判断一下

      int num;
      if(scan.hasNextInt()){   //键盘输入类型是否为int型
          num = scan.nextInt();
      }else{
          System.out.println("请输入数字!");
      }
      

循环结构

while循环

while
while(/*条件*/){
    //循环体;
}
do……while
do{
    //循环体;
}while(/*条件*/);
区别

while(){}do{}while()作用都类似,都执行循环,区别在于while(){}是先判断再执行,do{}while()则是先执行后判断。

有些人可能是还是不太理解什么执行,什么判断。那其实可以将它类比称街边的餐馆,判断就是结账执行就是吃饭,那么while(){}就是先结帐吃饭,而do{}while()就是先吃饭结账

for循环

for(/*语句A*/;/*语句B*/;/*语句C*/){
    //循环体;
}
//例:
for(int i = 0 ; i < 10 ; i++){
    System.out.println("我好牛X"); //每天夸自己十遍
}

执行顺序:语句A => {语句B => 循环体 => 语句C => 语句B => 循环体 => 语句C ……}

for循环要求:

  • 语句A,语句C为普通语句,语句B为布尔表达式,然而对三条语句的内容不作要求;

  • 语句省略;

    int i = 0;
    for(; i < 10 ; i++){
        //循环体;
    }
    //或
    for(;;i++){
        //循环体;
        /*当语句B省略后for循环就失去了循环结束条件,若不使用break关键字,循环会一直进行下去*/
    }
    //或
    for(int j = 10;j < 0 ;){
        //循环体;
        j--;
    }
    

break&continue

breakcontinue都是结束循环,但break是忽略条件语句,直接结束整个循环,而continue是结束当前循环

举个栗子:

A~Q,12张扑克,甲、乙、丙、丁各三张后出的只能比前一张牌大;

甲出7,乙有4,5,J,Q他选择过(continue),而丙只有1,2,3,6丙表示很淦,于是他掀了桌(break),不打了,牌局结束。

分支结构

if语句

if(){}else{}
if(/*条件*/){
    //如果条件为true执行
	//代码块;
}else{
    //否则执行
    //代码块;
}
if(){}else if(){}
if(/*条件1*/){
    //如果条件1为true执行
    //代码块;
}else if(/*条件2*/){
    //如果条件1为false,条件2为true执行
    //代码块;
}else{
    //否则执行
    //代码块;
}

switch语句


switch(/*表达式*/){
    case /*值1*/:
        //代码块;
        //(break;)
    case /*值2*/:
        //代码块;
        //(break;)
//break;非必须,需要时添加
    default/*否则执行*/:  //非必须
        //代码块;
}

注:

  • 表达式的值必须为byteshortintcharenum(枚举)String类型;

  • break是用来退出switch结构的,若无break执行当前case子句后会执行接下来的case子句直到遇到break关键字;

    //周四去蹭饭,周五看电影,周六去相亲(也到了想要个女朋友的年龄了啊)
    import java.uilt.Scanner;
    public class RiCheng{
        public static void main(String args[]){
            Scanner scan = new Scanner(System.in);
            System.out.printl("今天星期几:");
            int today = scan.nextInt();
            switch(today){
                case 4:
                    System.out.println("去蹭饭");
                    break;
                case 5:
                    System.out.println("去看电影");
                case 6:
                    System.out.println("去相亲");
                default:
                    System.out.println("学习使我快乐");
    	    }
    	}
    }
    

    输出结果

    今天星期几:1

    学习使我快乐

    今天星期几:4

    去蹭饭

    今天星期几:5

    去看电影

    去相亲

所以在程序中使用switch语句一定要注意break的使用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值