入门java第三天 JAVA运算、Scanner类和Random类

本文详细介绍了Java中的各种运算符,包括算数运算符、赋值运算符、比较运算符、逻辑运算符和三元运算符,并提供了具体的代码示例。同时,讲解了Scanner类如何用于键盘输入数据以及Random类生成随机数的方法。最后,通过综合案例展示了这些概念的实际应用。
摘要由CSDN通过智能技术生成

目录

一、运算符

1.1 概述

1.2 算数运算符 

1.3 赋值运算符​编辑

1.4 比较运算符

 1.5 逻辑运算符

1.6 三元运算符 

二、Scanner类

2.1 基础案例 

2.2 案例1: 键盘录入两整数求和

2.3 案例2: 键盘录入三整数求最大值(三元运算)

2.4 案例3: 键盘录入一整数,判断奇偶(三元运算)

三、随机数Random类

3.1 案例 : 1-100之间的任意一个随机整数  

四、综合案例


一、运算符

1.1 概述

        对常量或变量进行操作的符号,通常用于数据的比较或运算。

举例:

        (1) 10 + 20中,+是运算符中的算术运算符

        (2)销售产品,验证库存量 >= 购买数量,>= 是比较运算符

运算符分类:

        算数运算符、赋值运算符、比较运算符、逻辑运算符、位移运算符、三元运算符

1.2 算数运算符 

        由常量,变量,运算符组成符合java语法的式子就称为表达式,表达式都有结果,结果就是表达式的值

举例:
double price = 22.9;
int count = 2;
double total = price * count;

*:运算符, 并且是算术运算符, 表示乘法运算
price * count:是表达式, 由于 * 是算术运算符, 因此这个表达式叫算术表达式

算数运算符:

 案例:

public class Day0303 {
 public static void main(String[] args) {
 
 int a = 9;
 int b = 2;
 
 System.out.println(a+b);
 System.out.println(a-b);
 System.out.println(a*b);
 System.out.println(a/b); //4 默认整数 舍弃小数位
 double d = (double)a/(double)b;
System.out.println(d);
 
 System.out.println(a%b);
 
 //自增++ 自减--
 
 //++a a = a + 1;
 //System.out.println(++a);
 //System.out.println(a++);
 int sum = a++ + b;
 System.out.println(sum); //11 a = 9
 //++放在前面 先加后运算 ++ 放后面 先运算后加
 int sum2 = a + 10;
 System.out.println(sum2); // 20
 int dx = 5;
 dx++; 
 //System.out.println(dx);//6
 dx = dx++*2;
 System.out.println(dx);//12 结果是12原因是dx=6时已经计算完成并且重新赋值给dx
 //等赋值完成之后原dx = 7 但是已经计算完成,结果不可变。
 ++dx;
 //System.out.println(dx); //13
 // -- 自减 a-- | a = a - 1
 int dc = 5;
 --dc; //4
 dc = dc-- + 5; //dc-- 先运算 结果已经固定
 dc--;
 System.out.println(dc); //8
 int db = 5;
 db = ++db - db--; //++db db = 6;
 //System.out.println(db); //0
 db = db--; //0
 System.out.println(db); //0
 
 // a++; 和 a = a++;
 // a = a++ 运算符 数据
 
 int o = 9;
o = o++ - o--;
 // 9 10
 System.out.println(o);
 int fx = 9;
 fx++;//10
 
 fx = fx-- + ++fx;
 // 10 10
 System.out.println(fx); //20
 }
}

自增自减总结:

++?
        ++ 在前比较简单,先运算再赋值 x = ++ b 值就是 11
?++
        ++ 在后比较简单,先赋值再运算 x = b ++ 值就是 x = 10 只要这一行或再次使用 b 执行完 b才会变成11

1.3 赋值运算符

/**
* 赋值运算符
* = += -= *= /= %=
*/
public class S0302{
 public static void main(String[] args) {
 
 int a = 10;
 a += 2; // a += ? 等同于 a = a + ? 等同于 a = a + 2
 a -= 5; // a = a -5;
 a *= 2; // a = a * 2;
 a /= 2; // a = a / 2;
 a %= 3; // a = a % 3;
 System.out.println(a);
 
 //练习
 int b = 10;
 b += 5; // b = 10 + 5 //15
 b *= 3; // 15 * 3 = 45
 b--; 
 //如果++或者-- 在后,如果给赋值那么值就是++--之前的值,如果直接++--
 //那么下一行打印就相当于已经操作完成的值。
 System.out.println(b);
 }
}

案例 - 面试题

short s = 5; s = s + 1; 代码是否有错?
short s = 5; s += 1; 代码是否有错?
第一个有错误,原因:类型转化 小类型(s short) 接收大类型(s + 1 int)
变化为:
short s = 5; s = (short)(s + 1);
+= 操作虽然等式拆解出来和上面是一样的, 但是JVM会默认认为+= 
类型允许在虚拟机中运行并且能够在运算时自动转换类型,相当于额外的功能。 可以避免类型转化问题

1.4 比较运算符

        用于比较是否相等和计算大小关系的符号,计算结果为boolean。

  以下为常见的比较运算符:

以下为代码中的使用案例: 

class S0303 {
 public static void main(String[] args) {
 
 int i = 5;
 int k = 10;
 int m = 20;
 
 //== equals() 这两个都是判断值是否相等(面试题)
 // == 是比较当前两个值的内存地址是否相同
 //equals() 比较的是值是否相等。
 String s1 = "哈哈";
 String s2 = "哈哈";
 System.out.println(s1 == s2); //true s1和s2都指向一个内存地址
 System.out.println(s1.equals(s2)); //true
 System.out.println("----------------");
 System.out.println(i == k); //false
 System.out.println(i+k != m); //true
 System.out.println(i+k > m); //false
 System.out.println(i+k < m); //true
 System.out.println(i+k >= m); //false
 System.out.println(i+k <= m); //true
 }
}

 1.5 逻辑运算符

        用于连接逻辑数据的运算符,只能运算boolean类型的数据,运算结果为boolean.

举例 1: 模拟登录页面 , 需要输入用户名和密码 , 验证 : 输入的用户名正确 同时 输入的密码正确 ,
zhangsan 123456 // 正确
        if ( username . equals ( "zhangsan" ) && password . equals ( "123456" )){
                // 成功登陆
        } else {
                // 错误,重新登陆
        }
举例 2 : 客户到我行进行金融交易 , 需要客户登记个人信息 , 登记页面上有输入电话号码选项, 电话号码有很多种 : 个人手机 , 家庭座机 , 紧急联系人 ... 后台验证 , 判断 个人手机 或者 家庭座机

几种常见逻辑运算符: 

代码中的使用案例:

public class Day0306 {
    public static void main(String[] args) {
 
     int a = 50;
     int b = 3;
     int c = 10;
     //逻辑与 & and 只有表示式都为true 结果才是true
     System.out.println(true & true); //true
     System.out.println(true & false); //false
     System.out.println(false & true); //false
     System.out.println(false & false); //false
     System.out.println(a > b & a > c); //true
     System.out.println(a > b & a < c); //false
     System.out.println(a < b & a > c); //false
     System.out.println(a < b & a < c); //false
     //逻辑或 | or 表示式只要有一个成立,结果就是true
     System.out.println(true | true); //true
     System.out.println(true | false); //true
     System.out.println(false | true); //true
     System.out.println(false | false); //false
 
     //异或 ^ (shfit + 6) 如果表达式结果不同 返回true 相同返回false
     System.out.println(true ^ true); // false
     System.out.println(true ^ false); // true
     System.out.println(false ^ true); // true
     System.out.println(false ^ false); // false
     //非 ! 结果取反 真的变成假的,假的变成真的。 只能作用在布尔值上
     System.out.println(!true); // false
     System.out.println(!false); // true
     System.out.println(!(a > b)); // false
     System.out.println(!(a < b & a > c)); //true
     }
}

 短路操作案例:

        public class Day0307 {
     public static void main(String[] args) {
     
     //短路与和短路或结果和逻辑与逻辑或相同。
     //不同点在于短路这种写法更节约内存开销。
     //性别 男、女、未知 2个字符 // 0 1 2 一个字节就够了。
 
 
     int a = 50;
         int b = 3;
     int c = 10;
     //短路与 && and 只有表示式都为true 结果才是true
     System.out.println(a > b && a > c); //true -- 没影响
     System.out.println(a > b && a < c); //false -- 没影响
     System.out.println(a < b && a > c); //false -- 短路与第二就不执行了。
     System.out.println(a < b && a < c); //false -- 短路与第二就不执行了。
     //短路或 || or 表示式只要有一个成立,结果就是true
     System.out.println(true || true); //true -- 第二个不执行
     System.out.println(true || false); //true -- 第二个不执行
     System.out.println(false || true); //true -- 没影响
     System.out.println(false || false); //false -- 没影响
     }
}

口诀(建议背诵):

& 全真为真 一假为假
| 一真为真 全假为假
! 结果取反
^ 相同为假 , 不同为真
逻辑运算符方法的面试题
# & && | || 的异同 -- 简答
&& & 相同点:
& 是逻辑与, && 短路与。两个执行最终结果相同,表达式左右只要有一个为 false 结果为 false
&& & 不同点:
如果表达左边已经为 false && 右边就不执行了。
| || 相同点:
| 是逻辑或, && 短路或。两个执行最终结果相同,表达式左右只要有一个为 true 结果为 true
| || 不同点:
如果表达左边已经为 true || 右边就不执行了。

1.6 三元运算符 

        别名三目运算符,同时可以操作三个数据或者表达式的运算符

        格式:表达式(结果为布尔值) ? 值1 : 值2;

代码实例:

public class Day0308 {
     public static void main(String[] args) {
 
     // 60
     int score = 15;
     if(score >= 60){
     //System.out.println("奖励一辆兰博基尼玩具");
     }
     if(score < 60){
     //System.out.println("男女混合双打");
     }
 
     //三元运算 三目运算
     //格式: 表达式(布尔)?值1:值2; 左真右假(真取左 假取右)
     String str = score >= 60?"奖励一辆兰博基尼玩具":"男女混合双打";
     System.out.println(str);
     //限制:只有两种结果时候可以使用。
 
     //0或1 - 转化 -- t 和 f
     //score == 0 ? "t":"f";
 
     int a = 99,b=0,c=50,d=200,e=70;
     //要求通过程序(三元)取出最大值。
     int max;
     max = a > b ?a:b;
     max = max > c ?max:c;
     max = max > d ?max:d;
     max = max > e ?max:e;
     System.out.println(max);
    }
}

二、Scanner类

        键盘录入: Scanner类,来自于java.util包,是JDK提供的类型

        作用: 在程序运行的过程中,可以使用Scanner类来实现获取从键盘输入的数据,提高数据来源灵活度.

Scanner 类使用步骤 :
第一步 : 导包
目的 : 为了让 JVM 定位到 Scanner 类型所在的具体位置
导入方式 : 类的声明之上使用关键字 import , 表示导入
import java . util . Scanner;
第二步 : 创建键盘录入对象 , Scanner sc = new Scanner ( System . in ) ;
第三步 : 调用 sc 对象的 nextInt 方法 , 获取键盘录入的一个整数
int x = sc . nextInt () ;
第四步 : 使用 x 后续处理

2.1 基础案例 

// import 导包 Java中导入一个其他包中的一个类,
// 那么本类就可以调用其他类的属性或方法
//import java.util.*; 第一步:导包
import java.util.Scanner;
public class Day0309 {
     public static void main(String[] args) {
 
    //实例化(new)Scanner类
     //实例化(new)Scanner类
     //接收的类型 标识符 = new 类();
     Scanner sc = new Scanner(System.in);
     //sc 对象名称
     //String str = sc.next(); //next需要输入一次
     //System.out.println(str);
     //按照行捕获信息
     //String str1 = sc.nextLine();
     //各种数据类型
     //byte s1 = sc.nextByte();
     //short s2 = sc.nextShort();
     //int s3 = sc.nextInt();
     //long s4 = sc.nextLong();
     //float s5 = sc.nextFloat();
     //double s6 = sc.nextDouble();
     //char s7 = sc.nextChar(); 没有方法
     boolean s8 = sc.nextBoolean();
     //System.out.println(s1);
     //System.out.println(s2);
     //System.out.println(s3);
     //System.out.println(s4);
     //System.out.println(s5);
     //System.out.println(s6);
     //System.out.println(s7);
     System.out.println(s8);
     }
}

2.2 案例1: 键盘录入两整数求和

/**
* 两个整数求和
*/
import java.util.Scanner;
public class S0309{
     public static void main(String[] args) {
 
     Scanner sc = new Scanner(System.in);
 
     System.out.println("请输入第一个整数");
     int a = sc.nextInt();
     System.out.println("请输入第二个整数");
     int b = sc.nextInt();
     System.out.println("两个整数和:"+(a+b));
     }
}

2.3 案例2: 键盘录入三整数求最大值(三元运算)

import java.util.Scanner;
public class S0309{
     public static void main(String[] args) {
 
     Scanner sc = new Scanner(System.in);
 
     System.out.println("请输入第一个整数");
     int a = sc.nextInt();
     System.out.println("请输入第二个整数");
     int b = sc.nextInt();
 
     System.out.println("请输入第三个整数");
     int c = sc.nextInt();
 
     //求最大值
     int max = a > b ? a : b;
     max = max > c ? max : c;
     System.out.println("最大值:"+max);
     }
}

2.4 案例3: 键盘录入一整数,判断奇偶(三元运算)

import java.util.Scanner;
public class S0309{
     public static void main(String[] args) {
 
     Scanner sc = new Scanner(System.in);
 
     System.out.println("请输入整数");
     int a = sc.nextInt();
 
     String msg = a%2 == 0 ?"偶数":"奇数";
     System.out.println(msg);
     }
}

三、随机数Random类

        JDK提供了一个类, 类名Random, 主要功能 : 可以生成指定范围内的任意一个随机数。
        Random来自于java.util路径下。
Random 类使用步骤 :
1 ) 导包 : Random 类所在具体路径导入到类的声明之上
import java . util . Random;
2 ) 创建出 Random 类型对象 :
Random ran = new Random () ;
3 ) 使用 ran 对象名 . 调用 Random 类型中功能
int a = ran.nextInt ( int count ) : 参数 count 表示需要随机生成的数据的范围 , 此方法生成数据范围 [ 0 , count)。
注意 : 生成的随机数 , 可以使用一个变量将其结果保存下来
4 ) 后续随机数使用

3.1 案例 : 1-100之间的任意一个随机整数  

import java.util.Random;
public class S0310{
     public static void main(String[] args) {
 
     //1.导包
     //2.创建这个类的对象
     Random r = new Random();
     //3.调用方法 nextInt()
     int m = r.nextInt();
     //可以给nextInt方法传范围1-100的随机数
     //[0,count), 左闭有开, 包含0,但是不包含count, 实际数据范围 : 0~99之间
     int n = r.nextInt(100)+1;
     System.out.println(n);
     }
}

四、综合案例

使用 Sccnner 姓名 性别 年龄 ( int ) 工资 ( double ) 工号 ( random
统一打印出来 ...
import java.util.Scanner;
import java.util.Random;
public class Demo{
    public static void main(String[] args){
    Random ran = new Randm();
    Scanner sc = new Scanner(System.in);
    String name = sc.next();
    int age = sc.nextInt();
    double salary = sc.nextDouble();
    int id = ran.nextInt(900000) + 100000;
    System.out.println("姓名:" + name);
    System.out.println("年龄:" + age);
    System.out.println("薪资:" + salary);
    System.out.println("编号:" + id);
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

修贤323

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

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

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

打赏作者

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

抵扣说明:

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

余额充值