第3章 操作符

Java中有关操作符的语法大多与C++中的类似,就不再重复说了,只说下其中特殊的地方。

1. String支持“+”和“+=”操作。在进行“+”操作时,如果一个操作数是字符串,其他操作数自动转为字符串。但要注意运算顺序。例如下面两个输出是不一样的。

System.out.println(“ans”+2+3);

System.out.println(2+3+“ans”);

2. “%”运算符的操作数可以是浮点数,如52.3%10的结果是2.3。

3. 二元运算符的结果的数据类型一般为两个操作数中范围较大的一个。

4. 赋值相容:小范围类型赋给大范围类型会自动转换为大范围的类型。

赋值不兼容:需要进行强制转换,可能发生精度丢失。

5. 测试对象的等价性

关系操作符==和!=适用于所有的对象,但其意义是对引用的比较,所以只是用不同的引用创建值两个相等的对象,它们的比较也是false的。如下面的代码

Integer n1 = new Integer(47);

Integer n2 = new Integer(47);

System.out.println(n1==n2);

输出结果为false。

那怎么比较两个对象的实际内容是否相同呢?这时必须要调用所有对象都使用的特殊方法equals(),但这个方法是不适用与基本类型的,基本类型直接使用关系操作符即可。

Integer n1 = new Integer(47);

Integer n2 = new Integer(47);

System.out.println(n1.equal(n2));

输出结果为true。

但事情没有那么简单,如果我们用equals比较我们自己创建的类,又会有奇怪的结果:

class Value {

int  i;

}

public class Test {

public static void main(String args[]){

Value a1=new Value();

Value a2=new Value();

a1.i=a2.i=100;

System.out.println(a1.equals(a2));

}

}

输出结果竟然是false。

这是因为equals()默认行为是比较引用,除非在自己创建的类中覆盖equals()方法,否则不能出现我们期望的结果。

6. 贴两个方法

printBinaryInt()和printBinaryLong(),分别接受int或long型的参数,并用二进制格式输出。

7. 窄化转换,存在信息丢失的危险,必须显式的进行转换,扩展转换着没有要求。

8. 将float或double类型转换为整型时,总是对该数字执行截尾,如果希望得到舍入的结果,就需要使用java.lang.Math中的round()方法。

9. Java中没有sizeof:没有用的需求,因为所有数据类型在机器中的大小是相同的。

10. 对char、byte和short中任何一个进行算术运算,都会得到一个int结果,必须显式的类型转换才能转换回原来的类型。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-25 01:52:17

第3章 操作符的相关文章

perl_note——第三章 操作符

第三章 操作符 一.算术操作符 二.整数比较操作符 三.字符串比较操作符 四.逻辑操作符 五.位操作符 六.赋值操作符 七.自增自减操作符 八.字符串联结和重复操作符 九.逗号操作符 十.条件操作符 十一.操作符的次序 一.算术操作符 :+(加).-(减).*(乘)./(除).**(乘幂).%(取余).-(单目负)   (1)乘幂的基数不能为负,如 (-5) ** 2.5 # error:   (2)乘幂结果不能超出计算机表示的限制,如10 ** 999999 # error   (3)取余的操

perl5 第三章 操作符

第三章 操作符 by flamephoenix 一.算术操作符二.整数比较操作符三.字符串比较操作符四.逻辑操作符五.位操作符六.赋值操作符七.自增自减操作符八.字符串联结和重复操作符九.逗号操作符十.条件操作符十一.操作符的次序 一.算术操作符 :+(加).-(减).*(乘)./(除).**(乘幂).%(取余).-(单目负)  (1)乘幂的基数不能为负,如 (-5) ** 2.5 # error:  (2)乘幂结果不能超出计算机表示的限制,如10 ** 999999 # error  (3)取

Thinking In Java笔记(第三章 操作符)

第三章 操作符 3.2使用Java操作符 操作符接受一个或者多个参数,并生成一个新值.参数的形式和普通方法调用不同,但是效果是相同的.普通的加减乘除和正负号都是和其他编程语言类似. 有些操作符可能会产生"副作用",改变操作数的值,这些擦佐夫最普通的用途就是用来产生副作用的.使用此类操作符产生的值和没有副作用的操作符产生的值没区别. 几乎左右的操作符都只能操作"基本类型",例外的是"=","==","!=",

java编程思想--第三章 操作符

额...继续搞些容易忽略的东西在下面,这章没打算精读,赶紧过,好戏应该在后面. 1.基本类型的赋值 比如 : int a =1; int b = a; 是进行值的复制,以后改变了a的值对b没有影响 引用类型的复制 比如: List<String> list1 = new  ArrayList<String>(); List<String> list2 = list1; 是进行的引用的复制,list1与list2 会同时指向 那个 ArrayList ,一个改变了它的状态

[Thinking in Java]第3章-操作符

3.1 更简单的打印语句 3.2 使用Java操作符 3.3 优先级 3.4 赋值 3.5 算术操作符 3.6 自动递增和递减 3.7 关系操作符 3.8 逻辑操作符 3.9 直接常量 3.10 按位操作符 3.11 移位操作符 3.12 条件操作符 3.13 字符串操作符+和+= 3.14 类型转换 目录 3.1 更简单的打印语句 学习编程语言的同学遇到的第一个程序无非是打印Hello, world了,然而在Java中要写成 System.out.println("Hello, world&q

快学Scala习题解答—第十一章 操作符

11 操作符 11.1 依据优先级规则,3 + 4 -> 5和3 -> 4 + 5是怎样被求值的? 在REPL中运行就可以得到结果.都是从左至右运行 12.2 BigInt类有一个pow方法,但没实用操作符字符. Scala类库的设计者为什么没有选用**(像Fortran那样)或者^(像Pascal那样)作为乘方操作符呢? Scala中的操作符就是方法.其优先级是依据首字母来推断的,优先级例如以下 最高优先级:除下面字符外的操作符字符 * / % + - : = ! < > &am

C# 本质论 第三章 操作符和控制流

操作符通常分为3大类:一元操作符(正.负).二元操作符(加.减.乘.除.取余)和三元操作符( condition?consequence:alternative(consequence和alternative表达式类型要一致) ),它们对应的操作数分别是一个.两个和三个. 要是永远括号增加代码可读性. 要用符合格式化而不是加法操作符来拼接字符串. 可以用char类型相减求两字母距离. float具有七位精度: 错误代码: float n1 = 0.987654321; 正确代码: float n

快学scala 第十一章 操作符 读书笔记及习题答案代码

chapter 11 操作符 标签:快学scala 一.笔记 scala种可以在反引号中包含几乎任何字符序列, val 'val' = 42 所有的操作符都是左结合的,除了以冒号(:)结尾的操作符,和赋值操作符.用于构造列表的::操作符是又结合的.1::2::Ni1的意思是1::(2::Ni1),先创建出包含2的列表,这个列表又被作为尾巴拼接到以1作为头部的列表中. 2. 函数调用语法:f(arg1, arg2,...)扩展到可以应用于函数之外的值,如果f不是函数或方法,那么这个表达式等于f.a

[Java编程思想-学习笔记]第3章 操作符

3.1  更简单的打印语句 学习编程语言的通许遇到的第一个程序无非打印"Hello, world"了,然而在Java中要写成 System.out.println("Hello, world"); 我们都会感觉太冗长了,能不能简单一些呢?静态导入可以省略掉System,就像这样 import static java.lang.System.*; public class Hello { public static void main(String[] args) {