【Java】面向对象02-运算符和赋值

2 运算符和赋值

2.1 掌握运算符

在Java中,运算符是用来执行各种操作的特殊符号。运算符用于在表达式中执行算术、关系、逻辑等操作。以下是Java中常见的运算符:

1. 算术运算符:

java

int a = 5, b = 2;

int sum = a + b; // 加法
int difference = a - b; // 减法
int product = a * b; // 乘法
int quotient = a / b; // 除法
int remainder = a % b; // 求余
2. 关系运算符:

java

int x = 5, y = 8;

boolean isEqual = (x == y); // 等于
boolean notEqual = (x != y); // 不等于
boolean greaterThan = (x > y); // 大于
boolean lessThan = (x < y); // 小于
boolean greaterOrEqual = (x >= y); // 大于等于
boolean lessOrEqual = (x <= y); // 小于等于
3. 逻辑运算符:

java

boolean p = true, q = false;

boolean andResult = p && q; // 与
boolean orResult = p || q; // 或
boolean notResult = !p; // 非
4. 赋值运算符:

java

int a = 5;
a += 3; // 等效于 a = a + 3;
5. 自增和自减运算符:

java

int x = 5;

x++; // 自增,等效于 x = x + 1;
x--; // 自减,等效于 x = x - 1;
6. 位运算符:

java

int a = 5, b = 3;

int andResult = a & b; // 按位与
int orResult = a | b; // 按位或
int xorResult = a ^ b; // 按位异或
int leftShiftResult = a << 1; // 左移一位
int rightShiftResult = a >> 1; // 右移一位
7. 三元运算符:

java

int x = 5, y = 8;

int result = (x > y) ? x : y; // 如果 x 大于 y,则结果为 x,否则结果为 y

2.2 在包含运算符的表达式中,确定操作数的值、并确定表达式的值是什么(包括值和类型)

在Java中,表达式的值和类型是由运算符和操作数的值以及类型共同决定的。不同类型的操作数在表达式中的组合可能导致类型转换和规则的应用。以下是一些常见的运算符和它们在表达式中的行为:

1. 算术运算符:

java

int a = 5, b = 2;

int sum = a + b; // 7,整数相加
int difference = a - b; // 3,整数相减
int product = a * b; // 10,整数相乘
int quotient = a / b; // 2,整数相除,结果为整数
int remainder = a % b; // 1,取余
2. 关系运算符:

java

int x = 5, y = 8;

boolean isEqual = (x == y); // false,判断是否相等
boolean notEqual = (x != y); // true,判断是否不相等
boolean greaterThan = (x > y); // false,判断是否大于
boolean lessThan = (x < y); // true,判断是否小于
boolean greaterOrEqual = (x >= y); // false,判断是否大于等于
boolean lessOrEqual = (x <= y); // true,判断是否小于等于
3. 逻辑运算符:

java

boolean p = true, q = false;

boolean andResult = p && q; // false,逻辑与
boolean orResult = p || q; // true,逻辑或
boolean notResult = !p; // false,逻辑非
4. 赋值运算符:

java

int a = 5;
a += 3; // 8,相当于 a = a + 3;
5. 自增和自减运算符:

java

int x = 5;

x++; // 6,自增
x--; // 5,自减
6. 字符串连接:

java

String str1 = "Hello";
String str2 = " World";

String result = str1 + str2; // "Hello World",字符串连接
7. 类型转换:

在表达式中,如果操作数的类型不同,Java会进行类型转换。有两种类型转换:

  • 隐式类型转换: 小范围类型自动转换为大范围类型,例如,整数转换为浮点数。

java

int intValue = 42;
double doubleValue = intValue; // 隐式类型转换,int转换为double
  • 显式类型转换: 大范围类型转换为小范围类型,需要使用强制类型转换。

java

double doubleValue = 3.14;
int intValue = (int) doubleValue; // 显式类型转换,double转换为int

2.3 掌握函数参数的传递方式

在Java中,函数参数的传递方式有两种:值传递和引用传递。理解这两种传递方式对于编写Java程序是很重要的。

1. 值传递(Pass by Value):

在值传递中,实际参数(调用函数时传递的参数)的值被复制给形式参数(函数定义中声明的参数)。这意味着函数内对形式参数的修改不会影响实际参数的值。

java

public class PassByValueExample {
    public static void main(String[] args) {
        int x = 10;
        System.out.println("Before: " + x);
        modifyValue(x);
        System.out.println("After: " + x);
    }

    public static void modifyValue(int num) {
        num = 20; // 修改形式参数的值
    }
}

上述代码输出结果为:

makefile

Before: 10
After: 10

在这个例子中, modifyValue 方法接收一个值为 10 的参数 num,然后修改了 num 的值为 20。但是,这个修改并不影响 main 方法中的变量 x 的值。

2. 引用传递(Pass by Reference):

在Java中,虽然对象引用是通过值传递的,但是通过引用传递对象引用,实际上是传递了对象引用的副本。这样,在函数内对对象引用所指向的对象的修改会影响到实际参数。

java

public class PassByReferenceExample {
    public static void main(String[] args) {
        StringBuilder myStringBuilder = new StringBuilder("Hello");
        System.out.println("Before: " + myStringBuilder);
        modifyReference(myStringBuilder);
        System.out.println("After: " + myStringBuilder);
    }

    public static void modifyReference(StringBuilder strBuilder) {
        strBuilder.append(", World!"); // 修改对象引用所指向的对象
    }
}

上述代码输出结果为:

makefile

Before: Hello
After: Hello, World!

在这个例子中, modifyReference 方法接收了一个 StringBuilder 对象引用,然后在对象上进行了修改。这个修改反映在 main 方法中的 myStringBuilder 对象上。

总体来说,Java中的参数传递是值传递,但对于引用类型的参数,传递的是对象引用的副本,因此在函数内对对象引用所指向的对象的修改会影响到实际参数。

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值