01-Java语法基础(三)-知识

本文详细介绍了Java中的Scanner类,用于获取用户键盘输入,并展示了如何创建、提示输入、接收和关闭键盘扫描器。同时,文章还涵盖了算术、关系、位和逻辑运算符的使用,包括加减乘除、比较、位操作和逻辑短路等概念,通过实例代码加深理解。
摘要由CSDN通过智能技术生成

01.Java语法基础(三)-知识

本章节将为大家讲解 Scanner & 运算符


一、Scanner键盘扫描器

在编写程序时,我们通常会输入内容,然后让程序对我们输入的内容进行处理。那么在控制台输入内容我们可以使用Scanner键盘扫描器,将你输入的内容扫描到程序中。

1.1、使用步骤

1.1.1 创建键盘扫描器

固定格式:

	Scanner key = new Scanner(System.in)

注意: 使用Scanner之前需要import Scanner


1.1.2 提示用户输入

代码如下(示例):

System.out.println(“请输入内容”);

注意:此步不是必要的,可以省略。但是如果不写,运行程序时,不会自动弹出控制台,输入内容。而且用户也不知道改怎么操作或者输入什么内容。所以一般建议 此步加上。



1.1.3 接收用户输入

1)接收int类型的内容:key.nextInt();2)接收double类型的内容:key.nextDouble();
3)接收String类型的内容:key.next();或者key.nextLine();

注意:根据输入的数据类型不同,选择对应的方法


1.1.4 关闭键盘扫描器

key.close();

注意:在使用完键盘扫描器之后,记得关闭键盘扫描器


1.2 案例:键盘输入两个数字,输出这两个数的和,差,积,商

  • 算数运算符:+、-、*、/、%

  • 注意:当使用/时,如果左右两边都是整数,就做相除取整运算,如果左右两边有任何一边是小数,就做正常的除法运算

package basic;

import java.util.Scanner;

/**
 * 案例一:键盘输入两个数字,输出这两个数的和
 * 
 * 算术运算符: + - *  "/"   %
 * 注意: 当使用  “/”时,如果左右两边都是整数,就做相除取整运算
 * 	    如果左右两边有任何一边是小数,就做正常的除法运算
 * @author NING MEI
 *
 */
public class Demo05 {
	
	public static void main(String[] args){
		//1.创建键盘扫描器
		Scanner key = new Scanner(System.in);
		//提示用户输入第一个数字
		System.out.println("请输入第一个数字:");
		//接收第一个数字
		int num = key.nextInt();
		//提示输入第二个数字
		System.out.println("请输入第二个数字");
		//接收第二个数字
		//int num1 = key.nextInt();
		double num1 = key.nextDouble();
		//将两个数字加起来,得出结果
		double sum = num/num1;
		//输出结果
		System.out.println(num+"/"+num1+"="+sum);
		//关闭键盘扫描器
		key.close();
		
	}
}
  • 上面案例中,如果要算加,减法,修改一下运算符即可。
  • 上面案例中,我们用了 + ,- ,* ,/ 这些事Java中的运算符

关于键盘扫描器还有有疑问的同学可以QQ扫描下方二维码,寻求帮助

在这里插入图片描述

二,运算符

2.1 赋值运算符

  • 赋值运算符以符号 ”=“ 表示,它是一个双目运算符(对两个操作数做处理),其功能是将右边操作数所包含的值赋给左边的操作数,例如:
package basic;
/**
* 1,赋值运算符
* 赋值运算符以符号 ”=“ 表示,它是一个双目运算符(对两个操作数做处理),其功能是将右边操作数所包含的值赋给左边的操作数,例如:
* 
* 左边的操作数必须是一个量,而右边的操作数则可以是变量(如:number、a)、常量(如123、'book')、有效的表达式(如:3*28)
*/
public class Demo0601 {
   public static void main(String[] args) {
//		int a = 100;//该表达式是将100赋值给变量a
//		
//		int i=1,j=2,k=3;//定义整型变量i,j,k
//		i=6;//变量=常数
//		k=i+j;//变量=表达式
//		final int val=5;//定义整型常量val
//		
//		5=k;//不能赋值给常量
//		i+j=k;//右值不能被赋值
   	
   	int a, b, c = 11; // 声明整型变量a、b、c
   	a = 32; // 将15赋值给变量a
   	c = b = a + 4; // 将a与4的和赋值给变量b,然后再赋值给变量c,开发中不建议这么写
   	System.out.println("a = " + a);
   	System.out.println("b = " + b);
   	System.out.println("c = " + c);
   }
}

2.2 算术运算符

  • +(加)、-(减)、*(乘)、/(除)、%(取余)
package basic;
/**
 * 算术运算符:+、-、*、/、%
 * @author Administrator
 *
 */
public class Demo0602 {
	public static void main(String[] args) {
		int num1 = 5;
		int num2 = 12;
		System.out.println("num1+num2的和为:" + (num1 + num2));
		System.out.println("num1-num2的差为:" + (num1 - num2));
		System.out.println("num1*num2的积为:" + (num1 * num2));
		System.out.println("num1/num2的商为:" + (num1 / num2));
		System.out.println("num1%num2 的余数为:" + (num2 % num1));
	}
}

2.3,条件(比较、关系)运算符

  • 关系运算符属于双目运算符,用来判断一个操作数与另外一个操作数之间的关系。

  • <(小于)、>(大于)、==(等于)、!=(不等于)、<=(小于等于)、>=(大于等于)

  • 注意:比较运算符一般用于组成条件表达式,结果都是布尔类型的,要么为true要么为false。

package basic;

import java.util.Scanner;

/**
 * 3,条件(比较、关系)运算符: 关系运算符属于双目运算符,用来判断一个操作数与另外一个操作数之间的关系。
 * 比如:  <  >  <=  >=  ==   !=(不等于)
 * 注意:比较运算符一般用于组成条件表达式,结果都是布尔类型的,要么为true要么为false
 */
public class Demo0603 {
	public static void main(String[] args) {
		Scanner key = new Scanner(System.in);
		System.out.println("请输入第一个数字");
		int num1 = key.nextInt();
		System.out.println("请输入第二个数字");
		int num2 = key.nextInt();
		System.out.println(num1+"<"+num2+"? 结果:"+(num1<num2));
		System.out.println(num1+">"+num2+"? 结果:"+(num1>num2));
		System.out.println(num1+"<="+num2+"? 结果:"+(num1<=num2));
		System.out.println(num1+">="+num2+"? 结果:"+(num1>=num2));
		System.out.println(num1+"=="+num2+"? 结果:"+(num1==num2));
		System.out.println(num1+"!="+num2+"? 结果:"+(num1!=num2));
		key.close();
	}
}

2.4,位运算符

&(与)、|(或)、^(异或)、~(非)

说明:位运算符如果作用在数字上,需要将数值转换成二进制再运算

    1.  &(与):按位与,只有当同时为1的时候结果才为1,否则为0.3&43:00114:0100  

​            结果:0000     System.out.println(3&4)为0

     2.  |(或):按位或,只有当同时为0的时候结果才为0,否则为1.3|43:00114:0100

​           结果:0111     System.out.println(3|4)为73.  ~(非):0110~33:0011

​           结果:1100   System.out.println(~3)为-4(最前面的1表示为符号,为1就是负,为0为正)

	  4.  ^(异或):两边相同为0,不同为1:。

​                                    3^43:00114:0100

​          结果:0111    System.out.println(3^4)为7



位运算符作用在条件表达式上

&:当左右两边条件表达式都为true的时候结果为true,否则为false
​ 4<5&4<6 输出为true
​ 4<5&4>6 输出为false

| :当左右两边条件表达式都为false的时候结果为false,否则为true
​ 4>5|4>6 输出为false
​ 4<5|4>6 输出为true

package basic;

import java.util.Scanner;

/**
 * 4,位运算符
 *   |  或  :左右两边有一边为true整个结果就为true
 *   &  与 :左右两边都为true时,整个结果才为true
 *   
 *   | 或,左右两边都是整数时,做按位或(先将整数转换成2进制,然后在将两个二进制数按位或,有一个为1,结果就为1,将最后的结果再转换成10进制)
 *	 &(与):按位与,只有当同时为1的时候结果才为1,否则为0
 *
 *	4个二进制位可以表示从0到15的数字,这刚好是1个16进制位可以表示的数据,也就是说,将二进制转换成16进制只要每4位进行转换就可以了。
 *
 */
public class Demo0604 {
	public static void main(String[] args) {
		Scanner key = new Scanner(System.in);
		System.out.println("请输入第一个数字");
		int num1 = key.nextInt();
		System.out.println("请输入第二个数字");
		int num2 = key.nextInt();
		System.out.println(num1<num2|num1==num2);	
		System.out.println(num1<num2&num1==num2);	
		
		//面试题 3|4 =?
		System.out.println(3|4);//7
		System.out.println(3&4);//0	
		
		key.close();
	}
}

2.5,逻辑运算符:&&(双与)、||(双或) 、!(非)、^(异或)

!(非):取反,如果a为false,则!a为true

^ (异或):a^b,如果a与b有且只有一个为true,则为true

 &&:当左右两边条件表达式都为true的时候结果为true,否则为false

​           4<5&&4<6      输出为true

​           4<5&&4>6      输出为false

 || :当左右两边条件表达式都为false的时候结果为false,否则为true 

​           4>5||4>6      输出为false

​           4<5||4>6      输出为true                      

  双&&和||对比&和|:

  • 对于&&而言,如果左边表达式为false,就已经能够表明整个表达式为false,右边的表达式就不会再做判断,会被屏蔽掉(语句短路)

  • 对于||而言 ,如果左边左边表达式为true,就已经能够表明整个表达式为true,右边的表达式就不会再做判断,会被屏蔽掉(语句短路)

一般情况下建议使用双&&和||

自加,自减:

​ 自加:前++,比如(++j),表示先自加1然后再赋值。

​ 后++,比如(j++)表示先赋值然后再自加1

package basic;

import java.util.Scanner;

/**
 * 5,逻辑运算符
 *    ||  或  左右两边有一边为true整个结果就为true
 *    &&  与  左右两边都为true时,整个结果才为true,只要有一边为false整个结果都为false
 */
public class Demo0605 {
	public static void main(String[] args) {
//		Scanner key = new Scanner(System.in);
//		System.out.println("请输入第一个数字");
//		int num1 = key.nextInt();
//		System.out.println("请输入第二个数字");
//		int num2 = key.nextInt();
//		
//		System.out.println(num1<num2||num1==num2);//true
//		System.out.println(num1<num2&&num1==num2);//false
//		key.close();
//		
		//笔试题
		int x = 1;
		int y = 2;
		int z = 3;
		
		boolean ok = x++<y++|++y<z++;
		System.out.println(ok);//true
		System.out.println(x);//2
		System.out.println(y);//4
		System.out.println(z);//4

		/*
		 * &&  和 ||  会造成语句短路
		 *   对于|| 而言,左右两边有一边为true结果就为true,也就是,当左边为true时,
		 *   右边的结果对整体的结果没有影响,此时就不需要执行右边的代码,右边的代码就会被频闭掉(被短路)
		 */
//		boolean ok = x++<y++||++y<z++;
//		System.out.println(ok);//true
//		System.out.println("x:"+x);//2
//		System.out.println("y:"+y);//3
//		System.out.println("z:"+z);//3
		
//		boolean ok = x++>y++||++y<z++;
//		System.out.println(ok);//false
//		System.out.println("x:"+x);//2
//		System.out.println("y:"+y);//4
//		System.out.println("z:"+z);//4
		
//		boolean ok = x++>y++&&++y<z++;
//		System.out.println(ok);//false
//		System.out.println("x:"+x);//2
//		System.out.println("y:"+y);//3
//		System.out.println("z:"+z);//3
		
		//自加和自减
		//自加:
		//  前++  比如 ++j  表示,先自加1  再把加1后的结果赋值出去
		//  后++  比如 j++  表示,先把自己的值赋值出去,再自加1
		int j = 1;
		int i = j++;
		System.out.println(i);//1
		System.out.println(j);//2
		
		i = ++j;
		System.out.println(i);//3
		System.out.println(j);//3
		
		//自减
		// 前-- 比如--j  表示,先自减1  再把加1后的结果赋值出去
		// 后-- 比如j--  表示,先把自己的值赋值出去,再自减1
	}
}

2.6,三目运算符

​ 格式:条件表达式?值1:值2

​ 表示:如果条件表达式成立就取1,不成立就取2

​ int age=13;

​ boolean ok =age>=18?true:false;

​ 注意:值1和值2的数据类型必须相同,值式什么类型的,就需要用对应变量类型变量取接收

package basic;

import java.util.Scanner;

/**
 * 6,三目运算符
 * 格式:条件表达式?值1:值2;
 * 条件表达式:由条件(比较)运算符组成的,最终结果为true或者false的表达式
 * 含义:如果条件表达式结果为true就取值1作为最终的结果,如果结果为false就取值2作为结果
 * 
 *  注意:格式中的值1和值2 他们的数据类型,必须一样
 */
public class Demo0606 {
	public static void main(String[] args) {
		Scanner key = new Scanner(System.in);
		System.out.println("请输入年龄:");
		int age = key.nextInt();
		//String是Java中的字符串,先使用后面讲
		//String say = age>=18?"可以进入网吧":"回去喝奶~~";
		double i = age>=18?10:0.1;//int隐式转换为double了
		//System.out.println(say);
		
//		int j = 10;
//		double d = j;
		key.close();
	}
}

2.7,运算符的优先级

括号 > 算数运算符 >关系运算符 > 逻辑运算符&& || > 三目运算符 > 赋值运算符



关于键盘扫描器还有有疑问的同学可以QQ扫描下方二维码,寻求帮助

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

听潮阁

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

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

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

打赏作者

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

抵扣说明:

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

余额充值