Java的基本程序设计结构(部分)

本文介绍了位运算的基础概念,包括左移、右移的操作及应用示例,并详细讲解了Java中字符串的使用方法,如子串提取、拼接及不可变特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

位运算

处理整型类型时,可直接对整型数值各个为操作。

左移右移
<<>>
各个位数值向左移,空缺补0各个位向右移,空缺补符号位(首位为符号位)

注:>>>运算符用0填充高位,不存在<<<运算符。
(21~~213: 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192)

例如:2457*1234

把1234拆分成 1024+128+64+16+2
原式变为
2457 * 1024+2457 * 128+2457 * 64+2457 * 16+2457 * 2,
即把2457左移各个位然后相加。

运算符优先级

(按顺序优先级依次降低)

运算符结合性
[ ].( )(方法调用)从左向右
! ~++ - - +(一元运算)- (一元运算) ( )(强制类型转换)new从右向左
* / %从左向右
+ -从左向右
<< >> >>>从左向右
< <= > >= instanceof从左向右
== !=从左向右
&从左向右
^从左向右
|从左向右
&&从左向右
||从左向右
?:从右向左
= += -= *= /= %= &= |= ^= <<= >>= >>>=从右向

字符串

Java 字符串就是 Unicode 字符序列。
标准 Java 类库中提供了一个预定义类,为 String。" " 括起来的为字符串。
如:
String i =" "; // an empty string
String greeting = “Hollow”;

1、子串
String 类的 substring 可从一个较大的字符串提取出一个子串。
String greeting = “Hollow”;
String s = greeting.substring(0,3);
即创建了一个“Hol”的字符串。(substring从0开始计数,到3截至,但不包括3)

2、 拼接
java语言可用+号连接两个字符串,当一个字符串与一个非字符串的值拼接时,后者被转换成字符串。

3、不可变字符串
栈:涉及控制指令顺序方法的基本类型放到栈中。先入后出原则。
堆:类的基本类型放在堆中。

1) string b = “a”;(等号之前的放在栈中,等号之后的数值放在堆中)

2) string x =“a”;
string x =“asada”;
上面的字符串变为下面的,需要再占用一个新的地址,并且舍去原来的地址,不可在原地址上更改,原地址不可变,即长度和存于其中的字符串都不可变。

3)a = c 改变a的地址
a.name = c 改变 name 的地址
无论怎样,只改变 = 前面内容的地址。

4、检测字符串是否相等

1) s.equals(t)
如果字符串 s 与字符串 t 相等,则返回 true ;不等,返回 false 。并且返回值的类型为 boolean 类型。
只有字符串的 equals 比较值,其他的比较地址。

2) string s3 = new String(“qwe”);
String s6 = s3;
String s7 = s6;
s6 = new String ( );
system.out.println(s3==s7);
(部分程序)
最后比较 s3 和 s7 的地址是否相等 因为 s6 又重新占用了一个新的无内容地址,而其所在原地址不可变,所以s7所在即为s6的原地址,与s3地址相同。

-
s3
qwe
s7
s6

3) 如图

在这里插入图片描述

we = new TestOb( ); 存在时:

链接
999
a
name
b
we
qwe

we = new TestOb( ); 不存在时:

链接
a
name
b
we
name
qwe
999

(new string 即在堆中找一块新空间放入)

在 Java 里面参数传递都是按值传递,按值传递传递的引用的地址值的拷贝,对象的内容可以在被调用的方法内改变,但对象的引用(不是引用的副本) 是永远不会改变的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值