对Java的基本类型,存储的是实际的值,而并非指向一个对象的引用,所以在赋值时,是直接将一个地方的内容复制到了另一个地方。
引用静态方法,在HelloData类中需要引用Print中的静态方法:
package net.mindview.util;
public class Print {
public static void print(Object obj){
System.out.println(obj);
}
}
package com.test.tij4.operators;
// 该import表示引用Print类的静态方法
import static net.mindview.util.Print.*;
public class HelloDate {
public static void main(String[] args){
print("Hello");
}
}
对于i++和++i,前者是先得值再自加,后者是先自加再得值,例:
public class AutoInc {
public static void main(String[] args) {
int i = 1;
System.out.println(++i); // i先+1再打印,结果=2
System.out.println(i++); // i先打印再+1,结果=2,但i的值已变为3
System.out.println(i); // 结果为3
System.out.println(--i); // i先-1再打印,结果为2
System.out.println(i--); // i先打印再-1,结果为2,但i的值已变为1
System.out.println(i); // 结果为1
}
}
对于基本数据类型,可以直接使用=比较值;对于大部分Java类库,可以使用equals()方法来比较值;而对于其他自定义类,需要自行重写equals()方法。因为大部分Java类库,都重写了equals()方法,equals()默认比较的还是对象的引用,例:
class Value{
int i;
}
public class EqualsMethod {
public static void main(String[] args) {
int i1 = 23;
int i2 = 23;
Integer n1 = new Integer(23);
Integer n2 = new Integer(23);
Value v1 = new Value();
Value v2 = new Value();
v1.i = v2.i = 23;
System.out.println(i1 == i2); // 对于基本数据类型直接使用=比较值,结果为true
System.out.println(n1 == n2); // 作为对象,=比较的是引用,结果为false
System.out.println(n1.equals(n2)); // 大部分Java类库,equals被重写,比较的是值,结果为true
System.out.println(v1.equals(v2)); // 由于Value类没有重写equals,默认equals比较的还是对象的引用,结果为false
}
}
直接常量:long型在值后加l或L,float加f或F,double加d或D;十六进制以前缀0x或0X开头,后面跟0~9或大小写a-f表示;八进制以前缀0开头,后面跟0~7的数字表示。
指数计数法:如,float f = 1.39e-43f代表的是1.39x10的-43次方。对于定义float,有小数点后位数的,需要明确指出是单精度类型f,因为编译器会默认认为是double类型。
原码、反码、补码:反码是对原码的取反操作,补码是对反码+1操作,如:
int型整数5二进制表示为:00000000 00000000 00000000 00000101
原码:00000000 00000000 00000000 00000101
反码:11111111 11111111 11111111 11111010
补码:11111111 11111111 11111111 11111011
在计算机中表达负数即为补码,最高位表示正负,负数为1,反之为正数,所以5的补码即为-5的值。
按位操作符,即用来操作整数基本数据类型中的单个bit,即二进制的位。
- ~:按位求反,作用是将各个二进制位由1变成0,0变成1;
- &:按位与操作符,两个都为1时结果为1,否则为0,类似"且";
- | :按位或操作符,两个有一个或以上为1时结果为1,否则为0,类似"或";
- ^:按位异或运算符,两个不同则结果为1,否则为0。
移位操作符,操作对象也是二进制的bit,只可用来处理整数类型。
- <<:无符号左移位操作符,按操作符右侧指定的位数将操作符左边的操作数向左移动(低位补0);
- >>:有符号右移位操作符,按操作符右侧制定的位数将操作符左边的操作数向右移动,若符号位正,则在高位插入0,否则插入1;
- >>>,无符号右移位操作符(Java特有),功能同上,只是无论如何都在高位插入0。
public class BiteManipulation {
public static void main(String[] args) {
// 无符号左移
System.out.println(7 << 8); // 将7的二进制111向左移动8位为11100000000,结果为1792
int x = 7;
x <<= 8;
System.out.println(x); // 将7的二进制111向左移动8位为11100000000,结果为1792并将值赋给变量x
// 有符号右移
System.out.println(7 >> 2);// 将7的二进制111向右移动2位为1,结果为1
/*
* 将-7的二进制11111111111111111111111111111001向右移动2位为xx111111111111111111111111111110
* 由于向右移是有符号的,-7为负数,高位补1,所以结果为11111111111111111111111111111110,即-2
*/
System.out.println(-7 >> 2);
int y = 7;
y >>= 2;
System.out.println(y); // 将7的二进制111向右移动2位为1,结果为1并赋值给变量y
// 无符号右移(Java特有)
/*
* 将-7的二进制11111111111111111111111111111001向右移动2位为xx111111111111111111111111111110
* 由于是无符号右移,高位补0,所以结果为00111111111111111111111111111110,即1073741822
*/
System.out.println(-7 >>> 2);
}
}
窄化转换(narrowing conversion),一种将能容纳更多信息的数据类型转换成无法容纳那么多信息的类型的转换;如将float型转换为int型。Java中默认的处理方式是将float数值的小数点后的数据直接舍弃,只保留整数值;如果想要得到四舍五入的结果,可以使用java.lang.Math中的round()方法。
在对不同数据类型做算术运算时,总是表达式中出现的最大的数据类型决定了最终结果的数据类型,如:一个float类型与double类型的值做运算,结果为double类型。
分享到:
相关推荐
2.8.2 语法 2.8.3 嵌入式HTML 2.8.4 一些标签示例 2.8.5 文档示例 2.9 编码风格 2.10 总结 2.11 练习 第3章 操作符 3.1 更简单的打印语句 3.2 使用Java操作符 3.3 优先级 3.4 赋值 3.4.1 方法调用中的别名问题 3.5 ...
《Thinking in Java》是Bruce Eckel的...通过深入阅读《Thinking in Java》第三版,并结合习题解答,你不仅可以掌握Java编程的基本技能,还能培养良好的编程习惯和问题解决思路。这是一次全面而深入的Java学习之旅。
第3章 控制程序流程 3.1 使用Java运算符 3.1.1 优先级 3.1.2 赋值 3.1.3 算术运算符 3.1.4 自动递增和递减 3.1.5 关系运算符 3.1.6 逻辑运算符 3.1.7 按位运算符 3.1.8 移位运算符 3.1.9 三元if-else运算符 3.1.10 ...
### Thinking in Java 自学笔记——第二章 一切皆对象 #### 重要概念解析 ##### 2.1 用引用操纵对象 在Java中,一切都被视为对象,这意味着无论是字符串、数字还是其他数据类型都可以被视为对象来进行操作。当...
#### 第3章 控制程序流程 - **条件语句**:覆盖`if`、`else`、`switch`等语句,用于根据不同的条件执行不同的代码块。 - **循环结构**:讲解`for`、`while`、`do-while`循环的使用方法。 - **异常处理**:介绍如何...
下面,我们将针对《Thinking in Java》第三版中的关键知识点进行详细阐述。 1. **基础语法**:Java的基础语法包括变量声明、数据类型(如基本类型和引用类型)、运算符、流程控制(如if语句、for循环、while循环和...
《Thinking in Java》是Bruce Eckel的经典编程教材,第三版(edition3)深入浅出地介绍了Java编程语言的核心概念和技术。这个压缩包文件包含了书中所提及的示例代码,名为"TIJcode",这对于理解和实践书中理论知识至...
《Thinking in Java》是Bruce Eckel的经典之作,第四版更是被广大Java开发者视为学习和进阶的必备书籍。这本书深入浅出地介绍了Java语言的核心概念和技术,覆盖了从基础到高级的主题,旨在培养读者“思考”像Java...
总的来说,《Thinking In Java第四版(中文版)》是一本全面覆盖Java编程的书籍,无论你是初学者还是经验丰富的开发者,都能从中受益匪浅。通过阅读这本书,你可以深化对Java的理解,提升编程技能,并掌握面向对象...
《Thinking in Java》是Bruce Eckel的经典编程教材,第三版主要涵盖了Java编程语言的核心概念和技术。这本书深入浅出地介绍了面向对象编程的思想,是初学者和有经验的程序员理解Java的宝贵资源。以下是对该书内容的...
第3章 控制程序流程 3.1 使用Java运算符 3.1.1 优先级 3.1.2 赋值 3.1.3 算术运算符 3.1.4 自动递增和递减 3.1.5 关系运算符 3.1.6 逻辑运算符 3.1.7 按位运算符 3.1.8 移位运算符 3.1.9 三元if-else运算符 3.1.10 ...
5. **chap3.pdf**:第三章可能讲解类与对象,这是面向对象编程的核心,会涵盖类的定义、对象的创建、封装、继承、多态等概念。 6. **chap4.pdf**:第四章可能涉及接口和抽象类,这是实现多态性和设计模式的重要工具...
6. **类型推断**:了解Java 7引入的钻石操作符(),简化泛型实例化。 书中的代码示例和习题答案是学习过程中非常宝贵的资源。通过实践这些例子,你能够更好地理解Java语言的精髓,并提升编程技能。书中的每个章节...
本资源为《Thinking in Java第四版》的练习题答案,对于学习Java编程的读者来说,它提供了宝贵的参考。通过这些答案,你可以检验自己的理解是否正确,或者在遇到困难时找到解决方案。下面将对其中涉及的一些重要知识...
类 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用其他组件 2.6.3 static关键字 2.7 我们的第一个Java程序 2.8 注释和...
《Thinking in Java》是Bruce Eckel的经典之作,中文版的第三版为中国的Java开发者提供了深入理解这门语言的宝贵资源。这本书以其全面性、深度和清晰的解释而著名,不仅适合初学者,也深受经验丰富的程序员喜爱。在...
《Thinking in Java》是Bruce Eckel的经典Java编程教材,第四版更是被广大Java开发者视为学习Java的必备参考书。这本书深入浅出地介绍了Java语言的核心概念和技术,旨在帮助读者建立起扎实的Java基础,并理解面向...
《Thinking in Java》是Bruce Eckel的经典之作,第三版针对Java语言进行了全面的阐述,旨在帮助读者深入理解Java的本质和编程思想。这本书以其独特的教学方式和丰富的实例,深受程序员和学习者的喜爱。以下是对该书...
《Thinking in Java》是Bruce Eckel的经典编程教材,它深入浅出地介绍了Java语言的核心概念和技术。这本书的第三版代码库包含了大量的示例程序,旨在帮助读者更好地理解和应用书中所讲解的知识点。以下是对这些代码...
### Thinking In Java的第一章知识点概览 #### 一、面向对象的基本概念 在《Thinking In Java》这本书的第一章中,作者介绍了Java的核心理念——一切皆对象。Java采用了一种统一的语法来处理所有事物,这是因为Java...