基本运算
举例一。1:最简单加减法运算
举例一。2:变量赋值
- public class OperateDemo01
- {
- public static void main(String args[]){
- int num = 22;
- System.out.println("第一次输出:num" + num);
- num = num - 3; // 修改变量内容
- System.out.println("第二次输出:num" + num);
- }
- }
一元操作符
举例二:正、负、取反
- public class OperateDemo02
- {
- public static void main(String args[]){
- boolean b = false;
- int x = 10;
- int y = -30;
- System.out.println("b = " + b + ", !b = " + !b); // 取反操作
- System.out.println("x = " + x +", -x = " + -x); // 使用负号
- System.out.println("y = " + y +", +y = " + +y); // 使用正号
- }
- }
算术运算符
加减乘除
取模运算符
- public class OperateDemo03
- {
- public static void main(String args[]){
- int i = 10;
- int j = 3;
- System.out.println(i + " + " + j + " = " + (i + j)); //加法操作
- System.out.println(i + " - " + j + " = " + (i - j)); //减法操作
- System.out.println(i + " * " + j + " = " + (i * j)); //乘法操作
- System.out.println(i + " / " + j + " = " + (i / j)); //除法操作
- System.out.println(i + " % " + j + " = " + (i % j)); //取模操作
- }
- }
关系运算符
举例四:大于小于
- public class OperateDemo04
- {
- public static void main(String args[]){
- System.out.println("3 > 1 = " + (3 > 1)); //使用大于号
- System.out.println("3 < 1 = " + (3 < 1)); //使用小于号
- System.out.println("3 >= 1 = " + (3 >= 1)); //使用大于等于号
- System.out.println("3 <= 1 = " + (3 <= 1)); //使用小于等于号
- System.out.println("3 == 1 = " + (3 == 1)); //使用等于号
- System.out.println("3 != 1 = " + (3 != 1)); //使用不等
- }
- }
if判断语句
举例五:
- public class OperateDemo05
- {
- public static void main(String args[]){
- if(5>2){
- System.out.println("条件成立:5大于2");
- }
- if(true){
- System.out.println("直接写的true");
- }
- if((3+6)==(3-6))
- System.out.println("这是不可能成立的"); // 如果只有一条语句可以不写括号。
- }
- }
自增、自减
举例六
- public class OperateDemo06
- {
- public static void main(String args[]){
- int a = 3 , b = 3; // 定义两个变量a和b
- System.out.println("a = " + a);
- // a++ 先计算,后自增
- System.out.println("\t a++ = " + (a++) + ", a = " + a);
- // ++b 先自增,后计算
- System.out.println("\t ++b = " + (++b) + ", b = " + b);
- }
- }
++x,--x尽量不要出现
逻辑运算符
&&,||,真值表
举例七
- public class OperateDemo07
- {
- public static void main(String args[]){
- boolean a = true;
- boolean b = false;
- System.out.println("a || b = " + (a || b));
- System.out.println("a | b = " + (a | b));
- System.out.println("a && b = " + (a && b));
- System.out.println("a & b = " + (a & b));
- }
- }
使用if语句进行多条件判断
举例八
- public class OperateDemo08
- {
- public static void main(String args[]){
- int score = 50; //定义成绩
- if((score<0) || (score>100)){
- System.out.println("输入的成绩有错误");
- }
- if((score<60) && (score>49)){
- System.out.println("成绩不及格准备补考吧!");
- }
- }
- }
“短路与”与“短路或”
典型错误举例九
- public class OperateDemo09
- {
- public static void main(String args[]){
- int x = 10/0; //定义变量
- System.out.println("x = " + x);
- }
- }
应该错误进行验证
与的举例十
- public class OperateDemo10
- {
- public static void main(String args[]){
- if(10!=10&10/0==0){
- System.out.println("条件满足");
- }
- }
- }
短路与的举例十一
- public class OperateDemo11
- {
- public static void main(String args[]){
- if(10!=10&&10/0==0){
- System.out.println("条件满足"); // 使用&&短路与
- }
- }
- }
“短路与”只要第一个条件满足,之后的程序代码都不再执行了。
或的举例十二
- public class OperateDemo12
- {
- public static void main(String args[]){
- if(10!=10|10/0==0){
- System.out.println("条件满足"); // 使用“|”非短路或
- }
- }
- }
短路或的举例十三
- public class OperateDemo13
- {
- public static void main(String args[]){
- if(10==10||10/0==0){
- System.out.println("条件满足"); // 使用“||”短路或
- }
- }
- }
经过以上分析之后,可以总结出,短路与和短路或是最经常使用到一种代码。
括号的使用
作用可以改变优先级
3+5+4*6-7 //默认是先乘除后加减
(3+5+4)*(6-7)
举例十四
- public class OperateDemo14
- {
- public static void main(String args[]){
- int result1 = 3 + 5 + 4 * 6 -7;
- int result2 = (3 + 5 + 4) *(6 - 7);
- System.out.println("3 + 5 + 4 * 6 -7 = " + result1);
- System.out.println("(3 + 5 + 4) *(6 - 7) = " + result2);
- }
- }
位运算符
如果要想时行位操作,则需要先将十进制的数据变为二进制数据,除以2的形式,求余数。
异或:相反为1,相同为0
举例十五
- public class OperateDemo15
- {
- public static void main(String args[]){
- int x = 3; //3的二进制数据 00000000 00000000 00000000 00000011 3
- int y = 6; //6的二进制数据 00000000 00000000 00000000 0000110 6
- System.out.println(x & y); //与 00000000 00000000 00000000 00000010 2 这里容易出错
- System.out.println(x | y); //或 00000000 00000000 00000000 00000111 7 这里容易出错
- System.out.println(x ^ y); //异或 00000000 00000000 00000000 00000101 5 这里容易出错
- }
- }
int x = 3; // 3的二进制数据: 00000000 00000000 00000000 00000011
int y = 6; // 6的二进制数据: 00000000 00000000 00000000 00000110
System.out.println(x & y); //与 00000000 00000000 00000000 00000010
System.out.println(x | y); //或 00000000 00000000 00000000 00000111
System.out.println(x ^ y); //异 00000000 00000000 00000000 00000101
还可以通过“~”取反码
举例十六
- public class OperateDemo16
- {
- public static void main(String args[]){
- int x = -3; //应该以补码的形式存在,补码 = 反码 + 1
- /*
- 学习汇编必备知识
- 求-3的补码
- 方法:
- ->求原码(第一位为1,其余位按二进制形式表示)
- ->求反码(除第一位之外,其余位数全部取反)
- ->求补码(在反码的基础之上再加1)
- ->求反码(整体位数取反)
- 1|0000000 00000000 00000000 00000011 -> -3的原码
- 1|1111111 11111111 11111111 11111100 -> -3的反码
- 1|1111111 11111111 11111111 11111101 -> -3的补码 //也就是说这就是-3的二进制码
- 0|0000000 00000000 00000000 00000010 -> ~3 = 2
- 注意:
- 第一位为1表示负数
- 除第一位之外其余位数表示二进制数字
- */
- System.out.println(~x);
- }
- }
int x = -3; // 应该以补码的形式存在
取反码的方法:找一下最精确的解释方法
左移与右移的方法
举例十七
- public class OperateDemo17
- {
- public static void main(String args[]){
- int x = 3; // 3的二进制数据:00000000 00000000 00000000 0000011
- System.out.println(x + "左移2位之后的内容:" + (x << 2)); //x=12
- }
- }
x<<2
// 3的二进制数据: 00000000 00000000 00000000 00000011
// 3的左移2位据: 00000000 00000000 00000000 00001100
举例十八
- public class OperateDemo18
- {
- public static void main(String args[]){
- int x = 3; // 3的二进制数据:00000000 00000000 00000000 0000011
- int y = -3; // 3的二进制数据:10000000 00000000 00000000 0000011
- /*
- 求-1的二进制码(哇塞牛比)
- 10000000 00000000 00000000 00000001 原码 = 第一位为1其余位按二进制处理
- 11111111 11111111 11111111 11111110 反码 = 除第一位全部取反
- 11111111 11111111 11111111 11111111 补码 = 反码+1
- */
- System.out.println(x + "右移2位之后的内容:" + (x >> 2));
- System.out.println(y + "右移2位之后的内容:" + (y >> 2));
- }
- }
x>>2
学习汇编必备资料
无符号右移
举例十九
- public class OperateDemo19
- {
- public static void main(String args[]){
- int x = 3; // 3的二进制数据:00000000 00000000 00000000 0000011
- int y = -3; // 3的二进制数据:10000000 00000000 00000000 0000011
- System.out.println(x + "右移2位之后的内容:" + (x >>> 2));
- System.out.println(y + "右移2位之后的内容:" + (y >>> 2));
- }
- }
x>>>2
位操作实际上在基本的开发中使用较少,对于一些底层的加密,MD5等才会用到。
SimpleExpress
简单运算符及表达式的使用
在java中提供了以下几种运算符,
+=
-=
x=
/=
%=
b++
与++b
b--
与--b
- public class SimpleExpressDemo01
- {
- public static void main(String args[]){
- int a = 5, b= 1;
- System.out.println("改变之前的数是:a = " + a + ", b = " + b);
- a += b; //等价于a = a + b
- System.out.println("改变之后的数是:a = " + a + ", b = " + b);
- }
- }
以上的运算实际上操作起来更加简便,但是这样的操作在现在开发中已经不提倡。
TypeChangeDemo
表达式类型的转换
当Java发现程序中表达试中有类型不相符的情况时,会依据下列的规则来处理类型的转换。
1.占用字节较少的类型转换成占用字节较多的类型。
2。字符类型会转换成int类型。
3.int 类型会转换成float类型。
4.表达式中若某个操作数的类型为double,则另一个操作数字也会转换成double类型。
5.布尔类型不能转换成其它类型。
举例:
- public class TypeChangeDemo{
- public static void main(String args[]){
- char ch = 'a';
- short a = -2;
- int b = 3;
- float f = 5.3f;
- double d = 6.28;
- System.out.println("(ch / a) - (d / f) - (a + b) = ");
- System.out.println((ch / a) - (d / f) - (a + b) );
- }
- }
只要数据操作中出现了double类型,则肯定是最大的类型,最终的操作结果以此类型为准备。
一般来讲开发中一定要写简单代码。