JAVA编程思想(2) - 操作符(二)

5. 直接常量

-一般来说,如果程序里使用了“直接常量”,编译器可以准确的知道要生成什么样的类型,但有时候却是模棱两可的。这时候需要我们对编译器进行适当的“指导”

-直接常量后面的后缀字符标示了它的类型。

-指数记数法:e代表“10的幂次”

-注意如果编译器能够正确的识别类型,就不必在数值后附加字符,例如语句:
float f4 = 200;

不存在含糊不清的地方,所以200后面不需要加L,但是对于:float
f4 = 1e-43f;

编译器通常会将指数作为双精度数(double)来处理,所以假如我们没这个f就会出错

6.按位操作符

-按位操作符用来操作基本数据类型中的单个“比特”(bit),即二进制位

-“与”操作符(&)、“或”操作符(|)、按位“非”(~)、“异或”操作符(^)

7.移位操作符

-移位操作符操作的运算对象也是二进制。移位操作符只可用来处理“整数”类型

-左移位操作符(<<)按位左移,在低位补0;“有符号”右移位操作符(>>)按位右移,若符号位为正,则在高位插入0,;若符号位为负,则在高位插入1,。Java中增加了一个“无符号”右移操作符(>>>),无论正负,都在高位插入0。这一操作符是C和C++没有的。但在进行“无符号”右移结合赋值操作的时候,可能还会有这样的问题:如果对byte或short值进行这样的右移操作,可能得不到正确的结果。它们会先被转换为int类型,再进行右移操作,然后“截断”,赋值给原来的类型,在这种情况下可能还会有-1的结果。

-如果对char、byte、short类型进行移位操作,那么会先被统一转换为int类型,并且结果也是int类型。而且只有数值右端的低5位才有用,这样防止我们移位超过int型值所具有的位数。long类型也是一样的数值右端的低6位才有用。

8.
三元操作符if-else

-三元操作符也称为条件操作符,因为它有三个操作数。

-表达式形式:boolean-exp
? value0 : value1,如果boolean-exp是true的话,就计算value0,否则就计算value1

9.
字符串操作符+和+=

-这个操作符在java中有一项特殊用途:连接不同的字符串。

-与C++相比,尽管操作符重载在Java中更容易实现,但仍过于复杂,所以Java程序员不能像C++和C#程序员那样实现自己的重载操作符。

-字符串操作符有一些很有趣的行为,如果表达式以一个字符串起头,那么后续所有的操作数都必须是字符串型。

10.
使用操作符时常犯的错误

-使用操作符时一个常犯的错误是,即使对表达式如果计算有点不确定,也不愿意使用括号。

-在C和C++中,一个常见的错误如下:

while (x = y) {
      //.....
}

程序员很明显想要测试是否“相等”(==),而不是进行赋值操作。在C和C++中,如果y是一个非零值,那么这种赋值的结果是true,而这样会得到一个无限循环。在Java中,这个表达式的结果不是布尔值,而编译器期望的是一个布尔值。由于Java不会自动的将int数值转换为布尔值,所以这里会抛出一个编译时的错误。所以这个错误在Java中永远不会出现,除非x和y都为布尔值

-Java中有一个与C和C++中类似的问题,即使用按位"与"和按位“或”代替逻辑“与”和逻辑“或”。Java编译器可防止这个错误发生,因为它不允许我们随便的把一种类型当作另一种类型来用。

11.
类型转换操作符

-Java会将一种数据类型自动转换成另一种。类型转换运算允许我们显式的进行这种类型转换,或者在不能自动进行转换的时候强制进行类型转换。

-在C和C++,类型转换可能是件头疼的事情,但是在Java中,类型转换则是一种比较安全的操作。然而如果要执行一种名为“窄化转换”的操作(也就是说将能容纳信息量大的数据类型转换成无法容纳那么多信息的类型),就可能会有数据丢失的危险。此时,编译器会强制我们进行类型转换。

-Java允许我们把任何基本数据类型转换成别的基本数据类型,但是布尔型除外。“类”数据类型不允许进行类型转换。

12.
提升、Java中没有sizeof

-通常,表达式中出现的最大的数据类型决定了表达式最终结果的数据类型。

-在C和C++中,sizeof()操作符告诉你为数据项分配的字节数。在C和C++中,需要使用sizeof()的最大原因是为了“移植”。而在Java中,不需要sizeof()操作符来满足这方面的需要,因为所有的数据类型在所有的机器中的大小都是相同的,我们不必考虑移植问题——它已经被设计在语言中了。

JAVA编程思想(2) - 操作符(二)

时间: 2024-10-12 08:58:15

JAVA编程思想(2) - 操作符(二)的相关文章

java编程思想总结(二)

java编程思想总结(二) java编程思想总结是一个持续更新的系列,是本人对自己多年工作中使用到java的一个经验性总结,也是温故而知新吧,因为很多基础的东西过了这么多年,平时工作中用不到也会遗忘掉,所以看看书,上上网,查查资料,也算是记录下自己的笔记吧,过一段时间之后再来看看也是蛮不错的,也希望能帮助到正在学习的人们,本系列将要总结一下几点: 面向对象的编程思想 java的基本语法 一些有趣的框架解析 实战项目的整体思路 代码的优化以及性能调优的几种方案 整体项目的规划和视角 其它遗漏的东西

java 编程思想笔记(二)——初始化

一.问题 随着计算机革命的发展,"不安全"的编程方式已逐渐成为编程代价高昂的主因之一. 初始化和清理正是涉及安全的两个问题. 二.java 解决方案 构造器:一种特殊的方法.java 中"初始化"和"创建"捆绑在一起,两者不能分离. 垃圾回收器:释放无用的对象. 三.方法重载 为什么要在这里讲方法重载?我觉得首先:构造器是一种特殊的方法,再一个,构造器除了默认构造器还有有参构造器.为了让方法名称相同而形式参数不同的构造器同时存在,就必须用到方法重

Java编程思想---第十二章 通过异常处理错误(中)

第十二章  通过异常处理错误(中) 12.4 创建自定义异常 我们不必拘泥于Java中已有的异常类型,Java提供的异常体系不可能预见所有的错误,所以可以自己定义异常类来表示程序中可能会遇到的特定问题:要自己定义异常类,必须从已有的异常类继承,最好是选择意思相近的异常类继承,建立新的异常类最简单的方法就是让编译器为你产生默认构造器,所以这几乎不用写多少代码: class SimpleException extends Exception { } public class InheritingEx

JAVA编程思想(2) - 操作符(一)

"在最底层,Java中的数据是通过操作符来操作的." 1. 使用Java操作符 -操作符接受一个或者多个參数,并生成一个新值,參数的形式与普通的方法调用不用,但效果是同样的.加号和一元的正号(+).减号和一元的负号(-).乘号(*).除号(/)以及赋值号(=)的使用方法与其它编程语言同样. 2. 优先级 -当一个表达式中存在多个操作符时,操作符的优先级就决定了各个部分的计算顺序. public class Precedence { public static void main(Str

Java编程思想学习(十二) 数组和容器

一.数组 1).数组的多种初始化方式 下面总结了初始化数组的多种方式,以及如何对指向数组的引用赋值,使其指向另一个数组对象.值得注意的是:对象数组和普通数组的各种操作基本上都是一样的:要说有什么不同的话就是对象数组默认值为null,而基本数组视本身情况而定. 1 package lkl; 2 3 import java.util.Arrays; 4 5 ///下面演示了数组的初始化 6 //包括对象数组和普通数组 7 class Base{ 8 private static long count

Java编程思想之十二 通过异常处理错误

Java的基本概念是结构不佳的代码不能运行余下的问题必须在运行期间解决,这就需要错误源能通过某种方式,把适当的信息传递给某个接收者--该接收者将知道如何正确处理这里问题. 12.1 概念 使用异常所带来的另一个相当明显的好处,它往往能够降低错误处理代码的复杂度. 12.2 基本异常 异常情形是指阻止当前方法或作用域继续执行的问题.把异常情形与普通问题相区分很重要,普通问题是指,在当前环境下能得到足够的信息,总能处理这个错误.而对于异常情形,就不能继续下去了,因为在当前环境下无法获得必要的信息来解

Java编程思想(二) —— 初始化与清理

(一)操作符一章的int类型数据溢出的问题在Java7的版本中仍然存在,而且溢出的结果千奇百怪. public class Hello { public static void main(String[] args) { int i = Integer.MAX_VALUE; System.out.println(i); System.out.println(i*4); System.out.println(i*5); } } 结果分别为2147483647,-4,2147483643. 当应用中

[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) {

【Java编程思想】二、一切都是对象

尽管Java是基于C++的,但是相比之下,Java是一种更“纯粹”的面向对象设计语言. 2.1 用引用操纵对象 一切都被视为对象, 因此可采用单一固定的语法.尽管一切都被看作对象,但操纵的标识符实际上是对象的一个“引用”. Java里的“引用”与C++中的“引用”是有区别的,但是这个概念不需要完全明白,学会处理引用就可以了. 2.2 必须由你创建所有对象 new关键字的意思就是“给我一个新对象”! 2.2.1对象存储到什么地方 1)寄存器 2)堆栈(RAM) 3)堆(RAM) 4)常量存储(RO