尚学堂 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 解析:将发生数组越界 ...
随机推荐
- 化繁为简,无需后端。巧用Yql+rss,搭建我的个人网站
[本文含有大量的心理描写,没耐心的看官直接跳转到末尾即可] 前言: 最近做好了个人网站.很多人都喜欢用WordPress弄一个自己的博客之类的,但其实我觉得没这个必要,Lofter的功能.界面神马的于 ...
- HDU 5033 Building(单调栈维护凸包)
盗张图:来自http://blog.csdn.net/xuechelingxiao/article/details/39494433 题目大意:有一排建筑物坐落在一条直线上,每个建筑物都有一定的高度, ...
- css.day04.eg
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- javascript原型prototype的一个你不一定知道的理解
原型和原型链的故事 相关文章: 为什么原型继承很重要 先来看看一段小代码用以引入要讲的小故事. function Foo() {}; var f1 = new Foo(); Foo.prototype ...
- java中判断两个字符串是否相等的问题
我最近刚学java,今天编程的时候就遇到一个棘手的问题,就是关于判断两个字符串是否相等的问题.在编程中,通常比较两个字符串是否相同的表达式是“==”,但在java中不能这么写.在java中,用的是eq ...
- C# 实现文件夹的复制以及删除
代码来源:http://blog.163.com/u_tommy_520/blog/static/20406104420147493933662/ http://www.cnblogs.com/lov ...
- 给div命名,使逻辑更加清晰
在上一小节中,我们把一些标签放进<div>里,划分出一个独立的逻辑部分.为了使逻辑更加清晰,我们可以为这一个独立的逻辑部分设置一个名称,用id属性来为<div>提供唯一的名称, ...
- 多核CPU利用测试
一直在想程序上是否特意让线程在指定的CPU上去运行,这样可以提高运行效率,所以特地写个代码让CPU使用率画正弦曲线的实验,我使用的是AMD X4 641的CPU,为四核四线程的片子. 代码如下 # ...
- 3.AOP入门1
1.定义1.1基本概念2. 1.定义 1.1基本概念 AOP:aspect object programing面向切面编程 aop编程的要点在于关注点和切入点 关注点:指的是代码中的重复部分,每次实现 ...
- nodejs新手教程中upload file的问题
可参见: http://cnodejs.org/topic/50234890f767cc9a51f88481 request.setEncoding("utf8");应注释掉.