值传递与引用传递

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

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

示例:

复制代码
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的幂次方场景。

相关推荐
王仔小奶几秒前
Rust 正在接管金融圈?深度拆解一份高薪 FinTech 岗位 JD
开发语言·金融·rust
小王C语言4 分钟前
Qt常用控件:多元素控件,纵向列表,表格控件,树状控件
开发语言·qt
fanruitian4 分钟前
python 可视化 panda seaborn matplotlib.pyplot
开发语言·python·matplotlib
梦想不只是梦与想11 分钟前
Python 中的 json 模块
python·json·对象转字符串
星河耀银海15 分钟前
Python文件操作:read、readline、readlines读取方式对比
python·文件操作·面向对象·基础函数·教程学习
jnrjian24 分钟前
delete file shell 让 AI 写脚本
服务器·开发语言
傅科摆 _ py38 分钟前
DP,贪心,堆和栈,二分力扣复习
开发语言·python·算法
kiracrimson1 小时前
栈与队列容器:适配器、deque 与 priority_queue
开发语言·c++·适配器模式
北冥you鱼1 小时前
Go 语言 CRUD 实战:从接口设计到真实业务场景
开发语言·后端·golang
Lichee201 小时前
招行Java 面试知识点梳理:Spring 事务、锁、线程池、集合
java·面试