热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java基础-运算符

算术运算符ArithmeticOprator:+-*:和数学中规则一样:当操作数都是整型,结果也是整型,小数部分舍弃%:结果是除法操作的余数.结果的符号取决于被模数.++
算术运算符Arithmetic Oprator:

+ - * :和数学中规则一样

/ :当操作数都是整型,结果也是整型,小数部分舍弃

% :结果是除法操作的余数.结果的符号取决于被模数.

++ -- :针对变量进行操作.

         前++ : 先对变量增加,再使用.

         后++ : 先使用变量原来的值,再增加.

         --同理:

+ : 当 + 两侧任意一侧是字符串的时候,+就是连接符.

作用:

         1.字符串拼接

         2.将其它类型的值转换成字符串,只需要让值和一个空串拼接即可.

 1 /*
 2     演示算术运算符
 3     + - * /
 4     %:取余
 5     ++ :针对变量操作,每次都加1.
 6     -- :针对变量操作,每次都减1.
 7         当++,--放在变量后,表示先使用,后变化.
 8         当++,--放在变量前,表示先变化,然后再使用.
 9         
10             +  :连接符,用于出现字符串的地方,简单的拼接.
11 */
12 public class ArithmeticDemo{
13     public static void main(String[] args){
14         
15         /*
16         int a = 10;
17         int b = 5;
18         
19                   //算术运算
20         System.out.println(a + b);  //15
21         System.out.println(a - b);  // 5
22         System.out.println(a * b);  //50
23         System.out.println(a / b);  //2
24         System.out.println(a % b);  // 0
25         */
26         /*
27                 // + 有重载操作:在算数运算中,它是加法,在遇到字符串时,它是连接符.
28         System.out.println("hello" + 10);   // hello10
29         
30             //注意 + 两侧的数据类型.
31         System.out.println(a + b + "world");  // 15world
32             // + 两侧都是字符串.
33         System.out.println("hello" + "\\world");  // hello\world
34             
35         System.out.println("hello" + (5 + 5));  //hello10  加()提升优先级.
36         */
37         
38         /*
39             //++表示对变量每次自增1
40         int a = 10;
41         //a++;
42         //System.out.println(a);  //11
43         
44             //--表示对变量每次减1
45         int b = 10;
46         //b--;
47         //System.out.println(b);  // 9
48         System.out.println(a++);  //10   先使用a原来的值,然后让a增加1
49         System.out.println(++b);  //11   先让变量值增加,然后使用   
50         */
51         
52         // double d = 3.14;
53         // System.out.println(++d); //4.1400000001
54         /*
55         //思考题1
56         int a = 10;
57         int b = 10;
58         int c = 10;
59         a = --c;   // c = 9, a = 9
60         b = c++;   // b = 9, c = 10
61         c = ++a;   // a = 10 , c = 10
62         System.out.println(a + "," + b + "," + c);   // a = 10 , b = 9 , c = 10
63         */
64         
65         //思考题2
66         // int a = 10;
67         // int b = 3;
68         // System.out.println(a*1.0 / b);   // 3.333333333
69                 
70         // int a = 4;
71         // int b = (++a) + (a++) + (a*10);
72         // System.out.println(a + "," + b);  // a = 6, b = 70
73                 //%结果的正负取决于被模数,就是%前面的数的正负.
74         int a = -10;
75         int b = -3;
76         System.out.println(a % b);   // -1
77         
78     }
79 }
View Code
赋值运算符:Assignment operator

基本赋值运算符:

         =

扩展赋值运算符:

         += -= *= /= %=

特点:不改变等号左边的变量的类型,相当于系统自动加上了类型转换.

         short s = 1;

         s = s + 1;// int -> short

         s += 1; //自动类型转换

/*
    赋值运算符的演示:
        =    就是把右边的常量(字面量),变量,表达式的值赋值给左边的变量
        扩展赋值运算符:就是一些赋值运算符的简化写法.
            +=   a += 10 ->  a = a + 10;
            -=
            *=
            /=
            %=
            特点:不改变左侧变量的数据类型.
                short s = 1;
                s = s + 1;       //报错
                s += 1;        //不改变左侧变量的数据类型

*/
public class AssignmentDemo{
    public static void main(String[] args){
        
        
        // int a = 10;                //用常量给变量赋值
        // int b = a;              //用变量给变量赋值
        // b = b + a;              //用表达式的值给变量赋值
        // System.out.println(a + "," + b);  // 10,20
        
        //连续赋值
        // int a,b,c;
        // a = b = c = 10;
        // System.out.println(a + "," + b + "," + c);  //10,10,10
        
        
        short s = 1;
        s = (short)(s + 1);
        System.out.println(s);   // 2
        
        
    }
}
View Code
比较运算符:Compare Operator

结果肯定是一个boolean类型

==

!=

>=

<=

instanceof : 判断某个对象是否是某个类的实例.

比较运算符可以比较:

常量,变量,表达式

/*
    比较运算符的演示
    ==
    !=
    >
    <
    >=
    <=
    instanceof:判断某个对象是否是某个类的实例.
    总结:比较运算符的结果肯定是一个boolean类型值(true/false)

*/
public class CompareDemo{
    public static void main(String[] args){
        /*
        //比较两个常量
        System.out.println(10 == 20);   //false
        
        //比较两个变量
        int a = 10;
        int b = 20;
        System.out.println(a == b); //false
        System.out.println(a != b); //true
        System.out.println(a >= b); //false
        System.out.println(a <= b); //true
        System.out.println(a > b); //false
        System.out.println(a */
        //比较表达式
        int a = 20;
        boolean b1 = a > (a - 10);
        System.out.println(b1);   //true
        
        
    }
}
View Code
逻辑运算符:Logic Operator

/*
    逻辑操作符的演示
    &     :两个操作数都是true,结果才为true,否则就是false
    |     :两个操作数都有一个是true,其结果就为true
    &&    :短路与,当左侧操作数为false时,整体的结果已经是false,右侧就不参与运算了
    ||    :短路或,当左侧操作数为true时,整体的结果已经是true,右侧就不参与运算了.
    ^     :异或,两个操作数不同时,结果为true,否则为false
    !     :取反,单操作数,相反.


*/
public class LogicDemo{
    public static void main(String[] args){
        /*
        System.out.println(true && true);      //布尔常量进行逻辑运算
        
            //布尔类型的变量进行运算
        boolean b1 = true ;
        boolean b2 = false ;
        boolean b3 = true ;
        System.out.println(b1 & b2);   // false
        System.out.println(b1 | b2);   // true
        System.out.println(b1 && b2);  // false
        System.out.println(b1 || b2);  // true
        System.out.println(b1 ^ b2);   // true
        System.out.println(b1 ^ b3);   // false
        System.out.println(!b1);       // false
        */
        /*    
            //短路操作
        int a = 1;
        boolean b = true && (a++) > 1;    
        System.out.println(a);    //  a = 2
        System.out.println(b);    //  b = false
        */
        /*
            //&&左侧为false,直接结果为false,右侧不参与运算.
        int a = 1;
        boolean b = false && (a++) > 1;    
        System.out.println(a);    //  a = 1
        System.out.println(b);    //  b = false
        */
        
        
    }
}
View Code
位运算符:Bitwise Operator

/* 
    位运算符的演示:
        <<: 对操作数的二进制表示形式操作,左边移出的位丢弃,右边全以0填充
        >> : 带符号右移,左边空出的位,以符号位填充.
        >>> : 无符号右移,左边空出的位,总以0填充.
        &  : 按位与操作.
        |  : 按位或操作.
        ^  : 按位异或操作.
        ~  : 按位取反.


*/
public class BitDemo{
    public static void main(String[] args){
            
        /*
        System.out.println(3 <<2);  //  相当于3*2^2 = 12   
             //带符号右移
        System.out.println(3 >> 2);  //  0
        System.out.println(-1 >> 2);  //  -1    
        System.out.println(-1 >> 9);  //  -1    
        System.out.println(-1 >> 30);  //  -1    
        
             //无符号右移
        System.out.println(-1 >>> 1);  //  21yi    
        */
            //按位与操作
        System.out.println(3 & 6);   //  2
            //按位或操作
        System.out.println(3 | 6);   //  7
            //按位异或操作
        System.out.println(3 ^ 6);   //  5
            //按位取反
        System.out.println(~6);   //  -7
        
        
        
        
    }
}
View Code
三元运算符:Ternary Operator

格式:

(布尔表达式) ? 表达式1:表达式2;

布尔值为true,整体是表达式1的值.否则是表达式2的值.

/*
    演示三元运算符:
    格式:
        (布尔值)?表达式1:表达式2;
    ()可选,建议加上.
    
*/
public class TernaryDemo{
    public static void main(String[] args){
        //直接使用布尔常量
        System.out.println((false)?1:2);
        
        int x = (false)?1:2;//
        
        //
        // int a = 10;
        // int b = 20;
        // double d = (b > a) ? 1.0:2.0;
        // System.out.println(d);
        
        //
        // int a = 4,b = 4;
        // System.out.println((a > b) ? a : b);
        
    }
}
View Code
程序流程控制:

if分支:

第一种:

if(条件表达式){

         语句体;

}

 

第二种:

if(条件表达式1){

         语句体1;

}else{

         语句体2;

}

 

第三种:

if(条件表达式1){

         语句体1;

}else if(条件表达式2){

         语句体2;

}else if(条件表达式3){

         语句体3;

}

...

else{

         语句体n;

}

*
    分支结构(选择结构)
    第一种:
        if(条件表达式){
            语句体;//可以是多条语句
        }
        
    
    第二种:
        if(条件表达式){
            语句体1;//可以是多条语句
        }else{
            语句体2;//可以是多条语句
        }
    
    第三种:
        if(条件表达式1){
            语句体1;//可以是多条语句
        }else if(条件表达式2){
            语句体2;//可以是多条语句
        }else if(条件表达式3){
            语句体3;//可以是多条语句
        }
        ...
        else{
            语句体n;//可以是多条语句
        }
        
*/



public class IfDemo1{
    public static void main(String[] args){
        // int a = 150;
        /*
        if(a > 0){
            System.out.println("a > 0");
        }
        //..
        System.out.println("if后的语句");
        */
        
        /*
        //第二种格式;
        if(a > 0){
            System.out.println("a>0");
        }else{
            System.out.println("a<=0");
        }
        System.out.println("if后的语句");
        */
        /*
        //第三种格式
        if(a <0){
            System.out.println("a <0");
        }else if(a <10){ //else隐含一个条件 a >= 0,
            System.out.println("a >= 0 a <10");
        }else if(a <20){//隐含条件 a >= 10,
            System.out.println("a >= 10 a <20");
        }else{    //隐含条件 a >= 20
            System.out.println("a >= 20");
        }
        //
        System.out.println("if后的语句");
        */
        
        
        // int a = 10;
        // int b = 20;
        // if(a > 0 && b > 5){
            
        // }else{
            
        // }
        
        // System.out.println((a > b)?a:b);
        
        //if后的{}可以省略,但是此时只能控制到第一个;结束
        if(false){
            System.out.println("ok");
            System.out.println("可以");
        }
        
        //建议不论if后面有多少条语句,一定要加{}
        
        
        
    }
}
View Code

如何在程序中接受从键盘上录入数据?

1.导包

         import java.util.Scanner;

         一定要在类定义的前面

2.创建对象

         Scanner s = new Scanner(System.in);

         现在只能出现在main方法中.

 

3.调用方法获取数据

         int x = s.nextInt();                       获取int值

         double d = s.nextDouble();       获取double值

/*
    从键盘录入三个int值,取其中的最大值.
    作业:
        使用三元运算符求键盘录入的三个数中的最大值(嵌套/不嵌套)
*/
//导包
import java.util.Scanner;

public class ScannerDemo1{
    public static void main(String[] args){
        //创建扫描器对象
        Scanner s = new Scanner(System.in);

        //提示输入三个数
        System.out.println("输入第一个int值:");
        int a = s.nextInt();
        System.out.println("输入第二个int值:");
        int b = s.nextInt();
        System.out.println("输入第三个int值:");
        int c = s.nextInt();
        /*
        //if-else取最大值
        if(a > b){
            if(a > c){
                System.out.println("最大值是: " + a);
            }else{ //c >= a
                System.out.println("最大值是: " + c);
            }
        }else{//b >= a
            if(b > c){
                System.out.println("最大值是: " + b);
            }else{ //c >= b
                System.out.println("最大值是: " + c);
            }
        }
        */
        //三元运算符求最大值.
        // int Max1 = (a > b)?a:b;
        // int Max2 = (Max1 > c)?Max1:c;
        // System.out.println("最大值为: " + Max2);
        
        int Max = (((a > b)?a:b)>c)?((a > b)?a:b):c;
        System.out.println("最大值为: " + Max);
    }
}
View Code

 


推荐阅读
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 本文由编程笔记#小编整理,主要介绍了关于数论相关的知识,包括数论的算法和百度百科的链接。文章还介绍了欧几里得算法、辗转相除法、gcd、lcm和扩展欧几里得算法的使用方法。此外,文章还提到了数论在求解不定方程、模线性方程和乘法逆元方面的应用。摘要长度:184字。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
author-avatar
南京展鸿物流_728
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有