值传递与引用传递

在Java中,参数传递方式为值传递,但具体表现取决于参数类型:

  • 基本数据类型 (如intdouble):传递的是值的副本,方法内修改不影响原始变量。
  • 引用数据类型(如对象、数组):传递的是对象引用的副本(即内存地址的副本),方法内通过引用修改对象属性会影响原始对象,但重新赋值引用不会影响原始引用。

示例:

复制代码
void modifyPrimitive(int num) { num = 10; }  // 不影响原始值  
void modifyObject(StringBuilder sb) { sb.append("!"); }  // 修改对象属性  
void reassignObject(StringBuilder sb) { sb = new StringBuilder("New"); }  // 不影响原始引用  

.java文件的类型限制

Java源代码文件(.java)需满足以下要求:

  • 文件名与公共类名一致 :若文件中包含public class,文件名必须与类名相同(区分大小写)。
  • 非公共类数量不限 :一个.java文件可包含多个非public类,但仅允许一个public类。
  • 编码格式:默认UTF-8,也可通过编译器参数指定其他编码。

示例:

复制代码
// 文件名为MyClass.java  
public class MyClass {}  
class Helper {}  // 允许的非公共类  

位运算

位运算直接操作二进制位,常用于高效计算或底层操作:

  • 左移(<<:低位补0,相当于乘以2的n次方。
  • 右移(>>:高位补符号位,相当于除以2的n次方(向下取整)。
  • 无符号右移(>>>:高位补0。
  • 与(&)、或(|)、异或(^:逐位运算。
  • 取反(~:按位取反。

示例:

复制代码
int a = 5; // 0101  
int b = a << 2; // 10100 (20)  
int c = a & 3; // 0001 (1)  

2*8最有效率的计算方式

使用左移位运算实现乘法效率最高,因CPU执行位运算比普通乘法快:

复制代码
int result = 2 << 3; // 等价于 2 * 2^3 = 16  

原理:2的二进制为10,左移3位变为10000(即16)。此方法适用于乘数为2的幂次方场景。

相关推荐
YsyaaabB14 分钟前
Deep Agents 实战课程
python·langchain
金銀銅鐵14 分钟前
斐波那契数列中连续10项的和总是能被11整除吗?
python·数学
2601_9621819615 分钟前
Spring boot从0到1 - day01
java·spring boot·后端
databook17 分钟前
用 Python 计算联合概率和条件概率
python·数据分析
一直C21 分钟前
Linux系统编程|信号进阶 + SystemV IPC(消息队列、共享内存)
linux·c语言·开发语言·算法·青少年编程·vim
典典分享指南29 分钟前
短视频分镜提示词:让 AI 出片的产品口播
java·c#·bash·composer·symfony
IT_Octopus31 分钟前
G1 与 GC 日志入门课程(以本次离线菜单 Full GC 事故为教材)
java·jvm
小王C语言35 分钟前
QT 基础:QT SDK 下载、配置、新建项目、项目代码解释
开发语言·qt
cfm_291438 分钟前
ReentrantLock 中 lock 与 tryLock 核心区别
java