Java编程思想总结笔记Chapter 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 三元操作符 if-else
  • 3.13 字符串操作符 + 和 +=
  • 3.14 使用操作符时常犯的错误
  • 3.15 类型转换操作符
  • 3.16 Java没有sizeof
  • 3.17 操作符小结
  • 3.18 总结

3.2 使用Java操作符

操作符为“=”、“==”和“==”能够操作所有的对象。

3.4 赋值

若对象使用 c=d,那么c和d都指向原本只有d指向的那个对象。

当 t1 = t2 时(别名现象),接着修改 t1 同时也会改变 t2,因为 t1、t2 包含相同的引用,指向相同的对象。
若想保持两个对象彼此独立,可这样 t1.level = t2.level;  。

3.6 自动递增和递减

a = 15,++a、--a: System.out.printf("~output:" + a++);   //~ output:15

a = 15,a++、a--: System.out.printf("~output:" + ++a);   // ~ output:16

3.7 关系操作符

上面两个Integer对象内容相同,但引用却是不同的,而==和!=比较的就是对象的引用(基本类型直接比较值,并没有引用)。若想比较对象内容,使用equals()方法。

注意:equals() 方法的默认行为是比较引用,所以必须在自己的新类中覆盖e quals() 方法,否则不会出现你想要的效果。大多数Java类库都覆盖了equals()方法,以便可以比较对象的内容。例子如下:

3.9 直接常量

十六进制 :前缀 0x 、    八进制: 前缀 0 、   二进制没有直接常量的表示方法。

指数计数法: 1.39e-43f 表示1.39 * 10-43       e 代表“10的幂次”。

3.10 按位操作符

按位操作符的运算对象是二进制的“位”(比特),Java对它的设计初衷是嵌入电视机机顶盒内,所以这种面向底层的操作仍被保留下来。但是很少用到为操作符。

&与    |或    ^异或   ~非 ,将布尔类型作为一种单比特值对待的话,不能执行非按位(~),为了避免与逻辑NOT混淆。按位操作符与逻辑运算符类似,但没有短路效果 。

3.11 移位操作符

运算对象是二进制的“位”,只可用来处理整数类型(布尔类型不行)。

负数要先转换为补码再运算就不介绍了。

左移(高位的n个0被舍去,最低位补n个0)<<:

11的二进制形式为1011  11<<2 之后的二进制为 101100  所以11<<2 = 44  相当于整数11*2n

右移(低位的n个数字移出,在高位补n个零)>>:

11的二进制形式为1011  11>>2 之后的二进制为 0010  所以11>>2 = 2   相当于整数11/2n

无符号右移操作符>>>: 无论正负都向低位移出n个数字,在高位补n个零
注意:对byte或short值进行无符号右移(>>>),得到的可能不是正确的结果。它们先被转换成int类型,再进行右移操作,然后被截断,赋值给原来的类型,在这种操作的情况下可能得到-1的结果,例子如下:

位运算汇编级执行速度是很快的,所以面试的时候可能会问:Java中用最有效率的方法算出2 乘以8 等于几?   答:2 << 3

实际意义不大,这点速度提高没意义,代码不直观。

3.16 Java没有sizeof

Java不需要sizeof()操作符,因为所有数据类型在所有机器中的大小都是相同的,不必考虑“移植”问题。

总结:太容易的知识点,又经常用到就不在笔记中出现,全部出现还不如重新看书。

今天在某软件看到这样的吐槽

看到立马想到Java编程思想的第二章里面的知识点:

当变量作为类的成员使用时,Java才确保给定其默认值,来确保基本类型成员变量得到初始化(初始值可能不是你想要的,最好自己初始化)。注意默认初始化的方法不适用于非某个类的字段变量,忘记初始化,Java会在编译时给你返回一个错误。

堆栈:位于通用RAM(随机访问寄存器)中,Java编译器必须知道存储在堆栈内所有数据的大小和生命周期,“堆栈指针”向下移动则分配新内存,向上移动则释放内存,速度仅次于寄存器,基本数据类型和引用存放在此。

局部变量运行时被分配在栈中,量大,生命周期短,如果虚拟机给每个局部变量都初始化一下,是一笔很大的开销,但变量不初始化为默认值就使用是不安全的。

转载注明:http://www.cnblogs.com/wujiancheng/

Java编程思想总结笔记The first chapter

Java编程思想总结笔记Chapter 2

时间: 2024-10-31 02:18:48

Java编程思想总结笔记Chapter 3的相关文章

Java编程思想总结笔记Chapter 2

本章介绍Java程序的基本组成部分,体会到Java中几乎一切都是对象. 第二章   一切都是对象 目录: 2.1 用引用操纵对象 2.2 必须由你创建所有对象 2.3 永远不需要销毁对象 2.4 创建新的数据类型:类 2.5 方法.参数和返回值 2.6 构建一个Java程序 2.7 你的第一个Java程序 2.8 注释和嵌入式文档 2.9 编码风格 2.1 用引用操纵对象 一切都看作对象,操纵的标识符实际上是对象的一个"引用",遥控器(引用)操纵电视机(对象),想调控电视,只需通过遥控

JAVA编程思想读书笔记(五)--多线程

接上篇JAVA编程思想读书笔记(四)--对象的克隆 No1: daemon Thread(守护线程) 参考http://blog.csdn.net/pony_maggie/article/details/42441895 daemon是相于user线程而言的,可以理解为一种运行在后台的服务线程,比如时钟处理线程.idle线程.垃圾回收线程等都是daemon线程. daemon线程有个特点就是"比较次要",程序中如果所有的user线程都结束了,那这个程序本身就结束了,不管daemon是否

【Java编程思想--学习笔记(一)】访问控制-包

Java编程思想–学习笔记(一) 访问控制(或隐藏具体实现)与"最初的实现并不恰当"有关. 1.包:库单元 我们之所以要导入包,就是要提供一个管理名字的空间机制. 每个java文件只能有一个public类.其他私有类为主public·类提供支持. 1.1 代码组织 与编译型语言不同,java可运行程序是一组可以打包并压缩成java文档文件(JAR,使用Java的jar文档生成器)的.class文件. 使用package和import关键字,使得不会出现名称冲突问题. 注意:java包的

Java编程思想读书笔记之内部类

现在是够懒得了,放假的时候就想把这篇笔记写出来,一直拖到现在,最近在读<Java编程思想>,我想会做不止这一篇笔记,因为之前面试的时候总会问道一些内部类的问题,那这本书的笔记就从内部类开始说起. 一.为什么需要内部类 1.一个内部类的对象可以访问它的外围类的私有数据. 2.对于同一个包中的其他类来说,内部类能够隐藏起来. 3.使用内部类实现多重继承. 二.内部类重要提要 1.在方法内部或者方法内部的作用域的内部类 eg:方法内部的内部类 public interface InnerInterf

Java编程思想重点笔记(Java开发必看)

Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面 试过程中,而且在大型项目开发中也是常用的知识,既有简单的概念理解题(比如is-a关系和has-a关系的区别),也有深入的涉及RTTI和JVM底层 反编译知识. 1. Java中的多态性理解(注意与C++区分) Java中除了static方法和final方法(private方法本质上属于final方法,因为不能被子类访问)之外,其它所有的方法都是动态绑定,这意

JAVA编程思想学习笔记——第一章 对象导论

搞了一年多java,野路子出身,发现java基础这块还是相当的薄弱!故决定学习<Java编程思想>这本书.在此把学习的知识点记录下! 面向对象的五大特性 1.万物皆为对象 2.程序是对象的集合,它们通过发送消息来告诉彼此所要做的 3.每个对象都由自己的由其它对象所构成的存储 4.每个对象都拥有其类型 5.某一特定类型的所有对象都可以接收同样的信息  单根继承结构 所有的类都继承自单一的基类,Object.在单根集成结构中的所有对象都具有一个公用接口,所以他们归根到底都是相同的基本类型.单根集成

【java编程思想--学习笔记(四)】对象导论

写这篇博客的前言: 长话短说,我希望通过阅读<java编程思想>来使我的代码 简洁可用 . 目的的层次不同,首先具体的目标是,了解Java的特性和巩固Java的基础. 更抽象的目的如下: 1.期待以巩固基础的方式,使代码优美,简洁,高效. 2.使自己写的模块能够开放适度,好用. 3.形成一种对代码是否优美的审美观. 于是<Java编程思想>第一章 对象导论 由此开始. 1.1 抽象过程 java 相对于命令式语言的优势在于只针对于待解问题建模.后者所做的主要抽象要求所做问题基于计算

[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编程思想总结笔记The first chapter

总觉得书中太啰嗦,看完总结后方便日后回忆,本想偷懒网上找别人的总结,无奈找不到好的,只好自食其力,尽量总结得最好. 第一章  对象导论 看到对象导论觉得这本书 目录: 1.1 抽象过程1.2 每个对象都有一个接口1.3 每个对象都提供服务1.4 被隐藏的具体实现1.5 复用具体实现1.6 继承1.7 伴随多态的可互换对象1.8 单根继承结构1.9 容器1.10 对象的创建和生命期1.11 异常处理:处理错误1.12 并发编程1.13 Java与Internet1.14 总结 觉得看完终于要精通J