尚学堂Java学习日记Day3
第三天老师先回顾了昨天的内容我从回顾中掌握了新的知识
如下图所示
int与double计算,输出类型为double的不同结果
会把int转成double类型的,这是隐式转换
第三天主要讲了运算符、简单应用类型(scanner和random)和if的流程控制语句
1.算术运算符
总结的结构示意图
下图所示:
两个变量做运算,结果取决于数据类型大的那个
取模就是求其余数
取模的正负取决与被除数的正负(被除数是左边的那个)
除法运算则无关
自增 ++
(++ i)前自增:先自增完毕,再运算整个表达式,语句分号前面的都是运算表达式
(i++)后自增,先运算完整个表达式(分号前面的都是表达式),再进行自增;
结论:
如果运算符在变量的前面,则该变量自增1或者自减1,然后返回的是变量的新值,如果运算符在变量的后面,则变量也会自增或者自减1,但是返回的是变量原来的值。++在前就是先运算,再取值,++在后就是先取值,再运算。
赋值运算符
= , +=, -=, *=, /=, %=
运算符 运算 范例 结果
= 赋值 a=3,b=2 a=3,b=2
+= 加等于 a=3,b=2;a+=b; a=5,b=2;
-= 减等于 a=3,b=2,a-=b; a=1,b=2;
= 乘等于 a=3,b=2,a=b; a=6,b=2
/= 除等于 a=3,b=2,a/=b; a=1,b=2;
%= 模等于 a=3,b=2,a%=b; a=1,b=2
a+=b 可以想象成 a=a+b;
变量声明完了之后,可以使用赋值语句(assignment statement)给变量赋一个值,Java中使用等号(=)作为基本的赋值运算符(assignment operator),
格式如下:
variable = expression;
变量 = 表达式;
变量我们已经知道如何声明,表达式具体如何定义?
表达式的定义:
表达式涉及到值(常量),变量和通过运算符计算出的值,以及他们组合在一起计算出的新值。
x =y+1;
问题1:
int x;
System.out.println (x = 1);
如何理解?
答:等价于
x=1;
System.out.println(x);
注意:不能 1=x,变量名必须在赋值运算符的左边。
对于short s1 = 1; s1 = s1 + 1; 由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。
对于short s1 = 1; s1 += 1;由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。
比较运算符 (boolean)
如何比较两个值?使用比较运算符 3和5谁大,在java中如何比较?
比较运算符比较的两边操作数,结果都是boolean的,只有true和false两种结果。
运算符 运算 例子 结果
== 相等于 4= =3 false
!= 不等于 4!= 3 true
< 小于 4 < 3 flase
大于 4 > 3 true
<= 小于等于 4<=3 false
= 大于等于 4>=3 true
Instanceof 检查是否是类的对象 "hello"instanceof String true
注意的细节:
1.使用比较运算符的时候,要求两种数据类型必须一致。
byte、short、char 会自动提升至int。
逻辑运算符
逻辑运算符用于对boolean型结果的表达式进行运算,运算的结果都是boolean型。我们的比较运算符只能进行一次判断,对于对此判断无能为力,那么逻辑运算符就可以经将较运算符连接起来。
三元运算符
格式
(条件表达式)?表达式1:表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;
示例:
1获取两个数中大数。
int x=3,y=4,z;
z = (x>y)?x:y;//z变量存储的就是两个数的大数
简单引用类型
Scanner和Random
1.Scanner类
我们要学的Scanner类是属于引用数据类型,我们先了解下引用数据类型。
引用数据类型的使用
与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式。
数据类型 变量名 = new 数据类型();
每种引用数据类型都有其功能,我们可以调用该类型实例的功能。
变量名.方法名();
Scanner类
Scanner类是引用数据类型的一种,我们可以使用该类来完成用户键盘录入,获取到录入的数据。
Scanner使用步骤:
导包:import java.util.Scanner;
创建对象实例:Scanner sc = new Scanner(System.in);
调用方法:
int i = sc.nextInt(); 用来接收控制台录入的数字
String s = sc.next(); 用来接收控制台录入的字符串
了解完Scanner类,我们编写代码来使用下它:ScannerDemo01.java
import java.util.Scanner;
public class ScannerDemo01 {
public static void main(String[] args) {
//创建Scanner引用类型的变量
Scanner sc = new Scanner(System.in);
//获取数字
System.out.println(“请输入一个数字”);
int n = sc.nextInt();
System.out.println(“n的值为” + n);
//获取字符串
System.out.println(“请输入一个字符串”);
String str = sc.next();
System.out.println(“str的值为” + str);
}
}
2.随机数类Random
我们来学习下,用来产生随机数的类Random,它也属于引用数据类型。
这个Random类,它可以产生多种数据类型的随机数,在这里我们主要介绍生成整数与小数的方式。
方法简介
public int nextInt(int maxValue) 产生[0,maxValue)范围的随机整数,包含0,不包含maxValue;
public double nextDouble() 产生[0,1)范围的随机小数,包含0.0,不包含1.0。
引用数据类型的使用方式,在学习键盘录入Scanner时,我们已经学习过,在这里,再次回顾一下:
Random使用方式:
import导包:所属包java.util.Random
创建实例格式:Random 变量名 = new Random();
接下来,通过一段代码,一起学习下Random类的使用,RandomDemo.java
import java.util.Random;
public class RandomDemo {
public static void main(String[] args) {
// 创建Random类的实例
Random r = new Random();
// 得到0-100范围内的随机整数,将产生的随机整数赋值给i变量
int i = r.nextInt(100);
//得到0.0-1.0范围内的随机小数,将产生的随机小数赋值给d变量
double d = r.nextDouble();
System.out.println(i);
System.out.println(d);
}
}
公式:
产生 范围 —> [1,100] 计算工厂 ( 随机数[max – min + 1] + min ) {闭合区间 }
如果 要是 开区间 则是 ( 随机数 [max – min ] + min )
if的流程语句
一共有三种:if…,if…else if…else,if else
下图例子
以上Day3内容