尚学堂 JAVA Day3 概念总结
java中的运算符
1、算术运算符 + - * / % Arithmetic operators
+ 运算符有三种身份 Additive Operator
1)加法:如 a + b;
2)连接:如 “北京” + 2008 ---》 北京2008
3)正号:如 +a; int a = 5, a = +5;
- 运算符有两种身份 Subtraction Operator
1)减法:如 a - b;
2)负号:如 -a; int a = 5, a = -5;
* 运算法有一种身份 Multiplication Operator
乘法 a * b;
/ 运算符有一种身份 Division Operator
除法 a / b;
注意:当/的左右两边都为整数时,结果也将为整数,即使真实结果是小数。
% 运算法有一种身份 Remainder Operator
取模运算。
如:a % b, 表示a/b然后取余数。
练习:请使用/ 和 % 运算符,将数字1234的各位数字分离出来。
- public class Test1 {
- public static void main(String[] args) {
- int a = 1234;
- int g;
- int s;
- int b;
- int q;
- q = a / 1000;
- System.out.println("1234的千位上是:" + q);
- b = (a % 1000) / 100;
- System.out.println("1234的百位上是:" + b);
- s = (a % 1200) / 10;
- System.out.println("1234的十位上是:" + s);
- g = (a % 1230);
- System.out.println("1234的个位上是:" + g);
- }
- }
2、赋值运算符 = Asssignment Operators
格式:
变量 = 表达式;
作用:
将等号右边表达式的值赋给左边的变量存放。
如:int a = 5 * 6 +3;
3、自增、自减运算符 ++、 -- increment operator\decrement operator
格式:
变量++ 或 ++变量;
变量-- 或 --变量;
前加: ++a; 规则:先增加后使用(赋值)
后加: a++; 规则:先使用后增加
注意:无论是前加还是后加,a的值都会增加1
如:a = 5;
b = a++;
结果为:
b = 5, a = 6;
又如:
a = 5;
b = ++a;
结果为:
b = 6, a = 6;
练习1:a = 2;
a = a++;
结果为:
a = 2;
其运算过程为:
1) 将a中的内容取出,放在临时的存储单元中;
2) a本身的存储单元内容2自增1变成3;
3) 临时存储单元的值2,存入变量a的存储单元中,正号覆盖了原来的数值3;
所以a = 2;
练习2: a = 2,
b = a++ + a++ + a++;
其结果为:
a = 5;
b = 9;
其运算过程为:
1) 第一个a++运算,将a取出为2;然后a+1=3;
2) 计算第一个 + 双目运算符,左边为2 ,右边为3,结果为5;
3) 此时a = 3;重复第1) 2)步的操作,得到a = 5,b = 9.
- public class Test2 {
- public static void main(String[] args) {
- int a = 2;
- a = a++;
- System.out.println("a = " + a);
- int c = 2;
- int b;
- b = c++ + c++ + c++;
- System.out.println("c = " + c + "\n" + "b = " + b);
- }
- }
4、关系运算符 >, <, >=, <=, ==, !=, instanceof ----- Relation operators
如:boolean flag = 'a' instanceof char;
- public class OpTest1 {
- public static void main(String[] args) {
- int b = 200000;
- int a = 300;
- boolean bFlag;
- bFlag = b > a;
- System.out.println(b + "大于" + a + "?\n" + bFlag);
- bFlag = b < a;
- System.out.println(b + "小于" + a +"? \n" + bFlag);
- bFlag = (b >= a);
- System.out.println(b + "大于等于" + a + "?\n" + bFlag);
- bFlag = (b <= a);
- System.out.println(b + "小于等于" + a + "?\n" + bFlag);
- bFlag = (b == a);
- System.out.println(b + "等于" + a + "?\n" + bFlag);
- bFlag = (b !=a );
- System.out.println(b + "不等于" + a + "?\n" + bFlag);
- }
- }
5、逻辑运算符:&与、|或、!非、&&短路与、||短路非 ----- Logic operators
1) &与
格式: 表达式1 & 表达式2
规则:当&符号两边的表达式均为true时,与运算表达式的值为true;反之为false.
2) |或
格式:表达式1 | 表达式2
规则:当|符号两边的表达式有一个为true时,|运算表达式的值为true;反之为false.
3) !运算
格式:!表达式
规则:当表达式为true是,费运算结果为false;反之为true.
4) && 短路与
格式: 表达式1 && 表达式2
规则:当&&符号的两边表达式值都为true时,短路与的值为true;反之为false.
注意:当短路与的表达式1为false时,表达式2中的操作将不再执行。因此提高了代码的运行效率。
5)|| 短路或
格式: 表达式1 || 表达式2
规则:当短路或符号两边的表达式有一个为false时,短路或的值为false;反之为true.
注意:当短路或的表达式1为true时,短路或将直接被赋值为true,表达式2中的代码将不再执行。
从而提高了代码的运行效率。
- public class LogicOp {
- public static void main(String[] args) {
- /*
- 逻辑运算符:&与、|或、!非、&&短路与、||短路非
- 1) &与
- 格式: 表达式1 & 表达式2
- 规则:当&符号两边的表达式均为true时,与运算表达式的值为true;反之为false.
- 2) |或
- 格式:表达式1 | 表达式2
- 规则:当|符号两边的表达式有一个为true时,|运算表达式的值为true;反之为false.
- 3) !运算
- 格式:!表达式
- 规则:当表达式为true是,费运算结果为false;反之为true.
- 4) && 短路与
- 格式: 表达式1 && 表达式2
- 规则:当&&符号的两边表达式值都为true时,短路与的值为true;反之为false.
- 注意:当短路与的表达式1为false时,表达式2中的操作将不再执行。因此提高了代码的运行效率。
- 5)|| 短路或
- 格式: 表达式1 || 表达式2
- 规则:当短路或符号两边的表达式有一个为false时,短路或的值为false;反之为true.
- 注意:当短路或的表达式1为true时,短路或将直接被赋值为true,表达式2中的代码将不再执行。
- 从而提高了代码的运行效率。
- */
- int a = 4;
- int b = 6;
- System.out.println("a = " + a);
- //boolean bl = (6 < a) & (6 > ++a); // &运算符
- //boolean bl = (6 < a) | (6 == ++a); // |运算符
- //boolean bl = !(6 > a); // !运算符
- //boolean bl = (6 < a) && (6 > ++a); // &&短路与运算符
- boolean bl = (6 < a) || (6 > ++a); // ||短路或运算符
- System.out.println("b1 = " + bl);
- System.out.println("a = " + a);
- }
- }
6、三目运算符 Ternary Operator
格式:
表达式0 = 表达式1 ? 表达式2 :表达式3
规则:
当表达式1的值为true时,表达式0的值为表达式2的值,否则,表达式0等于表达式3的值。
练习1:通过三目运算符,使用一个语句比较任意三个整数的大小,并将最大值赋给三目运算符。
练习2:写一个比较两个数大小的方法,并用该方法标胶任意三个整数的大小。
- public class TernaryOp {
- /*
- 三目运算符 Ternary Operator
- 格式:
- 表达式0 = 表达式1 ? 表达式2 :表达式3
- 规则:
- 当表达式1的值为true时,表达式0的值为表达式2的值,否则,表达式0等于表达式3的值。
- */
- public static void main(String[] args) {
- int a = 8;
- int b = 8887;
- int c = 8392884;
- //练习1的实现方法
- int max = (a > b ? a : b) > c ? (a > b ? a : b) : c;
- System.out.println(a + "," + b +","+ c + "中的较大者是:" + max);
- //练习2的实现方法
- int middleOne = maxNum(a,b);
- int theMax = maxNum(middleOne,c);
- System.out.println(a + "," + b +","+ c + "中的较大者是:" + max);
- }
- public static int maxNum(int x, int y) {
- int z = x > y ? x : y;
- return z;
- }
- }
7、扩展赋值运算符 +=, -=, *=, /=, %= Extended Assignment operators
- public class AssignOp {
- public static void main(String[] args) {
- /*
- 扩展的赋值运算符 Extended Assignment Operators
- += -= *= /= %=
- 作用:可以自动对数据类型进行转换后参与计算。
- */
- byte b = 127;
- short s = 489;
- int a = 10000;
- float f = 3.14f;
- b += 1;
- //b = b + 1; //将抛出异常 “不兼容的类型: 从int转换到byte可能会有损失” 因为这里试图将int型数据赋值给byte类型
- System.out.println("byte b 用 += 赋值运算符后 b = " + b);
- s -= 30;
- //s = s - 30; //将抛出异常 "不兼容的类型: 从int转换到short可能会有损失” 因为这里试图将int型数据赋值给short类型
- System.out.println("short s 用 -= 赋值运算符后 s = " + s);
- a /= 1.0;
- System.out.println("int a 用 /= 赋值运算符后 a = " + a);
- f *= 2.0;
- //f = f * 2.0; // 将抛出异常 “不兼容的类型: 从double转换到float可能会有损失” 因为这里试图将double类型数据赋值给float类型
- System.out.println("float f 用 *= 赋值运算符后 f = " + f);
- }
- }
8、数据类型的转换
1) 自动转换
小类型数据赋值给大类型时,将自动转换为大类型数据;
使用扩展复制运算符时,也会将等号右边的数据进行自动转换。
2) 强制转换
大类型数据赋值给小类型是,需要对大类型数据进行强制转换。
如:
byte b = 120;
int a = b; ---自动转换
int a = 120;
byte b = (byte)a; ---强制转换才行,否则将在编译时抛出损失精度异常
9、在java中,表达式的数据类型如何确定?
1) 表达式中有double数据时,表达式为double类型;
2) 表达式中没有double,但是有float时,表达式为float类型;
3) 表达式中没有double,也没有float, 但是有long时,表达式为long类型;
4) 表达式中没有double, float,和 long时, 表达式为int类型。
10、Math类
Math.abs();
Math.sqrt();
Math.pow(double a, double b);
Math.round(double a);
Math.ceil(double a);
Math.floor(double a);
Math.random();
练习1、产生一个[-100,100]之间的随机整数;
练习2、产生一个[321,9999]之间的随机整数;
练习3、产生一个四舍五入,保留两位小数的随机型数据,其范围是[0, 100]。
- public class HomeWork1 {
- /*
- 产生一个 [-100, 100] 范围的随机整数。
- 注意:random产生的随机数是 [0,1) 一个左闭右开区间
- */
- public static void main(String[] args) {
- int temp = 0;
- temp += Math.floor( 201 * Math.random() - 100 );
- System.out.println("temp = " + temp);
- }
- }
- public class HomeWork2 {
- /*
- 练习2: 产生一个 [321, 9999] 范围的随机整数。
- */
- public static void main(String[] args) {
- int temp = 0;
- temp += Math.floor( Math.random() * 10321 - 321 );
- System.out.println("temp = " + temp);
- }
- }
- public class HomeWork3 {
- /*
- 练习3:产生一个四舍五入,保留两位小数的随机型的double数, 其范围是[0, 100] 。
- */
- public static void main(String[] args) {
- double temp = 0;
- temp += Math.round( 10000 * Math.random() ) ;
- temp /= 100;
- System.out.println("temp = " + temp);
- }
- }
练习三有一个疑问:
当随机数取出后,当两位小数的末尾为0时,最后一位0没有显示输出。
如:29.20会显示成29.2,这是为什么?
尚学堂 JAVA Day3 概念总结的更多相关文章
- 尚学堂 JAVA DAY11 概念总结
1.冒泡排序算法 <升序排列> 思路1: 数组长度为n,那么要对数组进行n-1次遍历; step 1---从数组的第一个数开始,两两比较,如果第一个数 > 第二个数,将二者进行交换: ...
- 尚学堂 JAVA Day1 概念总结
1.什么是计算机语言?一些符号,这些符号按照计算机硬件结构可以理解的方式排列组合,方便人与计算机,计算机与计算机之间进行信息的交换. 2.什么是机器语言?就是简单的二进制0和1的组合.该语言是计算机硬 ...
- 尚学堂 JAVA DAY12 概念总结
面向过程和面向对象的区别.(5 分)面向过程就好像:一位父亲吩咐自己8岁的小儿子去买啤酒.他需要考虑儿子从出门后的每一个步骤,叮嘱儿子出门怎么走,如何过马路,到了超市如何找到酒水区,怎么识别需要的品牌 ...
- 尚学堂JAVA基础学习笔记
目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...
- 尚学堂Java第一课
今天是北京尚学堂郑州分校开课的第一天,小班面授教学. 我很兴奋,是一个小白对IT大神渴求传道授业解惑的兴奋. 杨老师还是一贯耐心详细的手敲了第一堂课的完整大纲,必须给杨老师赞赞赞!!! 从幽默的制定班 ...
- 尚学堂Java面试题整理
博客分类: 经典分享 1. super()与this()的差别? - 6 - 2. 作用域public,protected,private,以及不写时的差别? - 6 - 3. 编程输出例如以 ...
- 尚学堂java答案解析 第一章
本答案为本人个人编辑,仅供参考,如果读者发现,请私信本人或在下方评论,提醒本人修改 一.选择题: 1.C 解析:java为了安全,中并没有引入C语言的指针概念. 2.AD 解析:B:Java先通过ja ...
- 尚学堂 JAVA Day13 abstract 关键字
Abstract (抽象的) 这是一个关键字. 可以且只可以 用来修饰 <类> <方法>. 1---Abstract 类 如:Animal,可以被理解一个抽象的类.动物嘛,只是 ...
- 尚学堂java 参考答案 第九章
一.选择题 1.AC 解析:A.注意题目是Collections不是 Collection,前者是一个until下的类,后者才是接口 C.Set中的数据是无序且不能重复的 2.A 解析:将发生数组越界 ...
随机推荐
- Linux特殊权限
************************ ACL权限 ****************************************** acl权限的出现是为了弥补用户权 ...
- type和create type
type和create type 异同点: create type 可在库中生成一个长期有效的自定义类型对象,而type作用域仅限于语句块中: 两者都可以自定义数据类型: 各种ty ...
- 多个显示器, window.open的定位
// Pops a window relative to the current window position function popup(url, winName, xOffset, yOffs ...
- 浮点与整形在GUI下的相关思考
平时不接触绘图,似乎感觉不到浮点和整形所带来的区别,这次项目中意外的碰到了浮点与整形进行迁移的工作.因此写点心得,让自己以后也可以看看. 用浮点作图有个最大的弊端就是边界情况,比如你需要在点(20,2 ...
- Linux下python3与python3的多版本共存
python3已经出来有些许时候了,python3相比python2进行了大量的改进,包括语法,新的功能,还有优化.虽然很多库已经同时支持 python2和python3了,但是有些库仍然没有很好的支 ...
- 如何搭建MVC3与配置models层
1.1 新建项目 第一步:打开Vs2010界面,点击左上角文件,点击新建,选择项目 1.1(图1) 第二步:点击网站Web类型,选择ASP.net MVC3 Web应用程序,在名称中输入项目名称(解决 ...
- spring mvc标准项目结构
src com.xxx.inews.dao com.xxx.inews.dao.impl com.xxx.inews.data.entity com.xxx.inews.data.vo com.xxx ...
- 转:使用XHProf优化PHP程序
原文来自于:http://blog.sina.com.cn/s/blog_665fc8980100l8dq.html XHProf 是 FaceBook 开发的一个函数级别的 PHP 分层分析器. 数 ...
- 转:FIFO的定义与作用
一.先入先出队列(First Input First Output,FIFO)这是一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行第二条指令. 1.什么是FIFO? FIFO是英文Firs ...
- jquery 获取选中的文字.当前光标所在的位置等jquery-fieldselection 插件
写词典在线编辑器用到的一个功能 能获取选中的文字.当前的光标的位置 等位置,而且支持多个文本框一起操作 非常方便 git地址:https://github.com/localhost/jquery-f ...