Java学习笔记——运算符

目录

一、算术运算符

二、关系运算符

三、位运算符

四、逻辑运算符

五、赋值运算符

六、其他运算符

七、代码


 Java的运算符可分为以下几组:

算术运算符、关系运算符、位运算符、逻辑运算符、赋值运算符、其他运算符

 一、算术运算符

代码实例 1

int a = 3;
int b = 5;

/* 算术运算符 */
System.out.println("a + b = " + (a + b));  // a + b = 3 + 5 = 8
System.out.println("a - b = " + (a - b));  // a - b = 3 - 5 = -2
System.out.println("a * b = " + (a * b));  // a * b = 3 * 5 = 15
System.out.println("b / a = " + (b / a));  // b / a = 5 / 3 = 1  "/"整除
System.out.println("b % a = " + (b % a));  // b % a = 5 % 3 = 2  "%"取余
System.out.println("a++ = " + (a++));  // a++ 自增,先进行表达式运算,再自增。因此输出为a = 3,之后a = a + 1 = 4
System.out.println("a-- = " + (a--));  // a-- 自减,先进行表达式运算,再自减。因此输出为a = 4,之后a = a - 1 = 3

输出结果1 

二、关系运算符

代码实例2

int a = 3;
int b = 5;

/* 关系运算符 */
System.out.println("a == b is " + (a == b));  // a == b  --> 3 != 5  -->  false
System.out.println("a != b is " + (a != b));  // a != b  --> 3 != 5  -->  true
System.out.println("a > b is " + (a > b));  // a > b -->  3 < 5  -->  false
System.out.println("a < b is " + (a < b));  // a < b -->  3 < 5  -->  true
System.out.println("b >= a is " + (b >= a));  // b >= a  -->  5 >= 3  -->  true
System.out.println("b <= a is " + (b <= a));  // b <= a  -->  5 >= 3  -->  fasle

输出结果2

三、位运算符

代码实例3

/* 位运算符 */
int c = 10;  // 二进制c -->  0000 1010
int d = 15;  // 二进制d -->  0000 1111
int num = 0;

// 对应位都是1,则1,否则0
num = c & d;
System.out.println("c & d is " + Integer.toBinaryString(num));
System.out.println("c & d is " + (num));
/*   0000 1010
   & 0000 1111
   ------------
     0000 1010
* */

// 存在1,则1,否则0
num = c | d;
System.out.println("c | d is " + Integer.toBinaryString(num));
System.out.println("c | d is " + (num));
/*   0000 1010
   | 0000 1111
   ------------
     0000 1111
* */

// 相反,则1,否则0
num = c ^ d;
System.out.println("c ^ d is " + Integer.toBinaryString(num));
System.out.println("c ^ d is " + (num));
/*   0000 1010
   ^ 0000 1111
   ------------
     0000 0101
* */

// 对应位取反
num = ~c;
System.out.println("~c is " + Integer.toBinaryString(num));
System.out.println("~c is " + (num));
/* ~ 0000 0000 0000 0000 0000 0000 0000 1010
   ------------------------------------------
     1111 1111 1111 1111 1111 1111 1111 0101
* */

// 向左移位,低位补0
num = d << 2;
System.out.println("d << 2 is " + Integer.toBinaryString(num));
System.out.println("d << 2 is " + (num));
/*   0000 1111
    ------------
     0011 1100
* */

// 向右移位,高位补0
num = d >> 2;
System.out.println("d >> 2 is " + Integer.toBinaryString(num));
System.out.println("d >> 2 is " + (num));
/*   0000 1111
   ------------
     0000 0011
* */

// 正数右移,高位补0;负数右移,高位补1
num = d >>> 2;
System.out.println("d >>> 2 is " + Integer.toBinaryString(num));
System.out.println("d >>> 2 is " + (num));
/*    0000 1111
    ------------
      0000 0011
* */

num = -d;
System.out.println("d is " + Integer.toBinaryString(num));
num = num >>> 2;
System.out.println("d >>> 2 is " + Integer.toBinaryString(num));
System.out.println("d >>> 2 is " + (num));
// 负数的二进制:先取反。再 + 1
/*   0000 0000 0000 0000 0000 0000 0000 1111         1111 1111 1111 1111 1111 1111 1111 0000
    -----------------------------------------  -->  -----------------------------------------
     1111 1111 1111 1111 1111 1111 1111 0000         1111 1111 1111 1111 1111 1111 1111 0001
* */

// 负数右移
/*   1111 1111 1111 1111 1111 1111 1111 0000
    -----------------------------------------
     0011 1111 1111 1111 1111 1111 1111 1100
* */

输出结果3

四、逻辑运算符

代码实例4 

/* 逻辑运算符 */
boolean b1 = true;
boolean b2 = false;

// && 全true,则true,否则false;  || 有一个true,则true,否则false;  !取反
System.out.println("b1 && b2 = " + (b1 && b2));
System.out.println("b1 || b2 = " + (b1 || b2));
System.out.println("!(b1 && b2) = " + !(b1 && b2));

输出结果4 

五、赋值运算符

代码实例5

/* 赋值运算符 */
final int x = 10;
int z1 = 1;
int z2 = 1;

z1 = z1 + x;
z2 += x;
System.out.println("z1 = z1 + x is: " + z1 + " and z2 += x is: " + z2);

z1 = z1 - x;
z2 -= x;
System.out.println("z1 = z1 - x is: " + z1 + " and z2 -= x is: " + z2);

z1 = z1 * x;
z2 *= x;
System.out.println("z1 = z1 * x is: " + z1 + " and z2 *= x is: " + z2);

z1 = z1 / x;
z2 /= x;
System.out.println("z1 = z1 / x is: " + z1 + " and z2 /= x is: " + z2);

z1 = z1 % x;
z2 %= x;
System.out.println("z1 = z1 % x is: " + z1 + " and z2 %= x is: " + z2);

z1 = z1 << 2;
z2 <<= 2;
System.out.println("z1 = z1 << 2 is: " + z1 + " and z2 <<= 2 is: " + z2);

z1 = z1 >> 2;
z2 >>= 2;
System.out.println("z1 = z1 >> 2 is: " + z1 + " and z2 >>= 2 is: " + z2);

z1 = z1 & x;
z2 &= x;
System.out.println("z1 = z1 & x is: " + z1 + " and z2 &= x is: " + z2);

z1 = z1 ^ x;
z2 ^= x;
System.out.println("z1 = z1 ^ x is: " + z1 + " and z2 ^= x is: " + z2);

z1 = z1 | x;
z2 |= x;
System.out.println("z1 = z1 | x is: " + z1 + " and z2 |= x is: " + z2);

输出结果5

六、其他运算符

1、条件运算符 (?:)

  • variable x = (expression) ? value if true : value if false

代码实例6 

// 条件运算符
int m = 10;
int n;
// 若m == 1为真,则n = 10,否则n = 20
n = (m == 1) ? 10: 20;
System.out.println("n: " + n);

// 若m == 10为真,则n = 10,否则n = 20
n = (m == 10) ? 10: 20;
System.out.println("n: " + n);

 输出结果6

2、instanceof运算符

  • instanceof运算符用于判断该对象是否是一个特定类型,是返回true,否则false。

代码实例7

// instanceof运算符
String name = "Jack";
System.out.println(name instanceof String);

输出结果7

七、代码

public class Day3 {
    public static void main(String[] args){
        int a = 3;
        int b = 5;

        /* 算术运算符 */
        System.out.println("a + b = " + (a + b));  // a + b = 3 + 5 = 8
        System.out.println("a - b = " + (a - b));  // a - b = 3 - 5 = -2
        System.out.println("a * b = " + (a * b));  // a * b = 3 * 5 = 15
        System.out.println("b / a = " + (b / a));  // b / a = 5 / 3 = 1  "/"整除
        System.out.println("b % a = " + (b % a));  // b % a = 5 % 3 = 2  "%"取余
        System.out.println("a++ = " + (a++));  // a++ 自增,先进行表达式运算,再自增。因此输出为a = 3,之后a = a + 1 = 4
        System.out.println("a-- = " + (a--));  // a-- 自减,先进行表达式运算,再自减。因此输出为a = 4,之后a = a - 1 = 3

        /* 关系运算符 */
        System.out.println("a == b is " + (a == b));  // a == b  --> 3 != 5  -->  false
        System.out.println("a != b is " + (a != b));  // a != b  --> 3 != 5  -->  true
        System.out.println("a > b is " + (a > b));  // a > b -->  3 < 5  -->  false
        System.out.println("a < b is " + (a < b));  // a < b -->  3 < 5  -->  true
        System.out.println("b >= a is " + (b >= a));  // b >= a  -->  5 >= 3  -->  true
        System.out.println("b <= a is " + (b <= a));  // b <= a  -->  5 >= 3  -->  fasle

        /* 位运算符 */
        int c = 10;  // 二进制c -->  0000 1010
        int d = 15;  // 二进制d -->  0000 1111
        int num = 0;

        // 对应位都是1,则1,否则0
        num = c & d;
        System.out.println("c & d is " + Integer.toBinaryString(num));
        System.out.println("c & d is " + (num));
        /*   0000 1010
           & 0000 1111
           ------------
             0000 1010
        * */

        // 存在1,则1,否则0
        num = c | d;
        System.out.println("c | d is " + Integer.toBinaryString(num));
        System.out.println("c | d is " + (num));
        /*   0000 1010
           | 0000 1111
           ------------
             0000 1111
        * */

        // 相反,则1,否则0
        num = c ^ d;
        System.out.println("c ^ d is " + Integer.toBinaryString(num));
        System.out.println("c ^ d is " + (num));
        /*   0000 1010
           ^ 0000 1111
           ------------
             0000 0101
        * */

        // 对应位取反
        num = ~c;
        System.out.println("~c is " + Integer.toBinaryString(num));
        System.out.println("~c is " + (num));
        /* ~ 0000 0000 0000 0000 0000 0000 0000 1010
           ------------------------------------------
             1111 1111 1111 1111 1111 1111 1111 0101
        * */

        // 向左移位,低位补0
        num = d << 2;
        System.out.println("d << 2 is " + Integer.toBinaryString(num));
        System.out.println("d << 2 is " + (num));
        /*   0000 1111
           ------------
             0011 1100
        * */

        // 向右移位,高位补0
        num = d >> 2;
        System.out.println("d >> 2 is " + Integer.toBinaryString(num));
        System.out.println("d >> 2 is " + (num));
        /*   0000 1111
           ------------
             0000 0011
        * */

        // 正数右移,高位补0;负数右移,高位补1
        num = d >>> 2;
        System.out.println("d >>> 2 is " + Integer.toBinaryString(num));
        System.out.println("d >>> 2 is " + (num));
        /*    0000 1111
            ------------
              0000 0011
        * */

        num = -d;
        System.out.println("d is " + Integer.toBinaryString(num));
        num = num >>> 2;
        System.out.println("d >>> 2 is " + Integer.toBinaryString(num));
        System.out.println("d >>> 2 is " + (num));
        // 负数的二进制:先取反。再 + 1
        /*   0000 0000 0000 0000 0000 0000 0000 1111         1111 1111 1111 1111 1111 1111 1111 0000
            -----------------------------------------  -->  -----------------------------------------
             1111 1111 1111 1111 1111 1111 1111 0000         1111 1111 1111 1111 1111 1111 1111 0001
        * */

        // 负数右移
        /*   1111 1111 1111 1111 1111 1111 1111 0000
            -----------------------------------------
             0011 1111 1111 1111 1111 1111 1111 1100
        * */

        /* 逻辑运算符 */
        boolean b1 = true;
        boolean b2 = false;

        // && 全true,则true,否则false;  || 有一个true,则true,否则false;  !取反
        System.out.println("b1 && b2 = " + (b1 && b2));
        System.out.println("b1 || b2 = " + (b1 || b2));
        System.out.println("!(b1 && b2) = " + !(b1 && b2));

        /* 赋值运算符 */
        final int x = 10;
        int z1 = 1;
        int z2 = 1;

        z1 = z1 + x;
        z2 += x;
        System.out.println("z1 = z1 + x is: " + z1 + " and z2 += x is: " + z2);

        z1 = z1 - x;
        z2 -= x;
        System.out.println("z1 = z1 - x is: " + z1 + " and z2 -= x is: " + z2);

        z1 = z1 * x;
        z2 *= x;
        System.out.println("z1 = z1 * x is: " + z1 + " and z2 *= x is: " + z2);

        z1 = z1 / x;
        z2 /= x;
        System.out.println("z1 = z1 / x is: " + z1 + " and z2 /= x is: " + z2);

        z1 = z1 % x;
        z2 %= x;
        System.out.println("z1 = z1 % x is: " + z1 + " and z2 %= x is: " + z2);

        z1 = z1 << 2;
        z2 <<= 2;
        System.out.println("z1 = z1 << 2 is: " + z1 + " and z2 <<= 2 is: " + z2);

        z1 = z1 >> 2;
        z2 >>= 2;
        System.out.println("z1 = z1 >> 2 is: " + z1 + " and z2 >>= 2 is: " + z2);

        z1 = z1 & x;
        z2 &= x;
        System.out.println("z1 = z1 & x is: " + z1 + " and z2 &= x is: " + z2);

        z1 = z1 ^ x;
        z2 ^= x;
        System.out.println("z1 = z1 ^ x is: " + z1 + " and z2 ^= x is: " + z2);

        z1 = z1 | x;
        z2 |= x;
        System.out.println("z1 = z1 | x is: " + z1 + " and z2 |= x is: " + z2);

        /* 其他运算符 */
        // 条件运算符
        int m = 10;
        int n;
        // 若m == 1为真,则n = 10,否则n = 20
        n = (m == 1) ? 10: 20;
        System.out.println("n: " + n);

        // 若m == 10为真,则n = 10,否则n = 20
        n = (m == 10) ? 10: 20;
        System.out.println("n: " + n);

        // instanceof运算符
        String name = "Jack";
        System.out.println(name instanceof String);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
文件上传是Web开发中常见的功能之一,Java中也提供了多种方式来实现文件上传。其中,一种常用的方式是通过Apache的commons-fileupload组件来实现文件上传。 以下是实现文件上传的步骤: 1.在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency> ``` 2.在前端页面中添加文件上传表单: ```html <form method="post" enctype="multipart/form-data" action="upload"> <input type="file" name="file"> <input type="submit" value="Upload"> </form> ``` 3.在后台Java代码中处理上传文件: ```java // 创建一个DiskFileItemFactory对象,用于解析上传的文件 DiskFileItemFactory factory = new DiskFileItemFactory(); // 设置缓冲区大小,如果上传的文件大于缓冲区大小,则先将文件保存到临时文件中,再进行处理 factory.setSizeThreshold(1024 * 1024); // 创建一个ServletFileUpload对象,用于解析上传的文件 ServletFileUpload upload = new ServletFileUpload(factory); // 设置上传文件的大小限制,这里设置为10MB upload.setFileSizeMax(10 * 1024 * 1024); // 解析上传的文件,得到一个FileItem的List集合 List<FileItem> items = upload.parseRequest(request); // 遍历FileItem的List集合,处理上传的文件 for (FileItem item : items) { // 判断当前FileItem是否为上传的文件 if (!item.isFormField()) { // 获取上传文件的文件名 String fileName = item.getName(); // 创建一个File对象,用于保存上传的文件 File file = new File("D:/uploads/" + fileName); // 将上传的文件保存到指定的目录中 item.write(file); } } ``` 以上代码中,首先创建了一个DiskFileItemFactory对象,用于解析上传的文件。然后设置了缓冲区大小和上传文件的大小限制。接着创建一个ServletFileUpload对象,用于解析上传的文件。最后遍历FileItem的List集合,判断当前FileItem是否为上传的文件,如果是,则获取文件名,创建一个File对象,将上传的文件保存到指定的目录中。 4.文件上传完成后,可以给用户一个提示信息,例如: ```java response.getWriter().write("File uploaded successfully!"); ``` 以上就是使用Apache的commons-fileupload组件实现文件上传的步骤。需要注意的是,文件上传可能会带来安全隐患,因此在处理上传的文件时,需要进行严格的校验和过滤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值