《java编程思想》学习笔记—操做符

3.1更简单的打印语句

3.2使用java操做符

一、几乎全部的操做符都只能操做“基本类型”。例外的操做符是“=”,“==”,“!=”,这些操做符能操做全部的对象,除此以外,String类支持“+”和“+=”。java

3.3优先级

一、最简单的规则是先乘除,后加减dom

二、用括号明确规定计算顺序性能

3.4赋值“=”

一、右值能够是任何常数,变量或者表达式(只要它能生成一个值就行)。但左值必须是一个明确的、已命名的变量。测试

二、别名现象大数据

class Tank{
 int level;
}
public static void main (string[] args){
Tank t1 = new Tank();
Tank t2= new Tank();
t1.level = 9;
t2.level = 47;
print(t1.level);//9
print(t2.level);//47
t1=t2;
print(t1.level);//47
print(t2.level);//47
t1.level=27;
print(t1.level);//27
print(t2.level);//27
}

避免以上问题能够用:t1.level =t2.level ;code

3.4.1 方法调用中的别名问题对象

将一个对象传递给方法时,也会产生别名问题:字符串

class Letter {
  char c;
}

public class PassObject {
  static void f(Letter y) {
    y.c = 'z';
  }
  public static void main(String[] args) {
    Letter x = new Letter();
    x.c = 'a';
    print("1: x.c: " + x.c);//x.c: a
    f(x);
    print("2: x.c: " + x.c);//x.c: z
  }
}

3.5算术操做符

一、整数除法直接去掉结果的小数位,而不是四舍五入的圆整结果。编译器

二、(1)Random类的对象。若是在建立过程当中没有传递任何参数,那么java就会将当前时间做为随机数生成器的种子,并由此在程序每一次执行时都产生不一样的输出。随机数生成器对于特定的种子值老是产生相同的随机数序列。string

(2)经过Random类的对象,程序可生成许多不一样类型的随机数,可调用如下方法: nextInt(),nextFloat(),nextLong(),nextDouble()

3.5.1一元加、减操做符

一、一元加好惟一地做用仅仅是将较小类型的操做数提高为int

3.6自动递增和递减

3.7关系操做符

3.7.1测试对象的等价性

一、必须使用全部对象都适用的特殊方法equals()方法比较两个对象的实际内容是否相同。但这个方法不适用于“基本类型”,基本类型直接使用==和!=便可。 (1)

public class EqualsMethod {
  public static void main(String[] args) {
    Integer n1 = new Integer(47);
    Integer n2 = new Integer(47);
    System.out.println(n1.equals(n2));
  }
} 
/* Output:
true

(2)

class Value {
  int i;
}

public class EqualsMethod2 {
  public static void main(String[] args) {
    Value v1 = new Value();
    Value v2 = new Value();
    v1.i = v2.i = 100;
    System.out.println(v1.equals(v2));
  }
}
 /* Output:
false

(3)以上的结果是由于equals()默认的行为是比较引用。因此除非在本身的新类覆盖equals()方法,不然不可能表现出咱们但愿的行为。

3.8逻辑操做符

一、可将整数类型替换成布尔类型之外的其余任何基本数据类型。

3.8.1短路

一、若是全部的逻辑表达式都有一部分没必要计算,那将得到潜在的性能提高。

3.9直接常量

3.9.1指数计数法

编译器一般会将指数做为双精度数处理。

3.10按位操做符

一、按位操做:因为位是很是“小”的,因此按位操做符仅使用了一个字符。

二、&=,|=,|=都是合法的

三、按位操做符具备与逻辑操做符相同的效果,只是他们不会中途“短路”

3.11移位操做符

一、移位操做符只可用来处理整数类型。

3.12三元操做符if-else

3.13字符串操做符+和+=

3.14使用操做符时常犯的错误

3.15类型转换操做符

3.15.1截尾和舍入

一、将float和double转型为转型值时,老是对该数字执行截尾。若是想要获得舍入的结果,就须要使用java.lang.Math中的round()方法。

3.15.2提高 一、表达式中出现的最大数据类型决定了表达式最终结果的数据类型。若是将一个float值与一个double值相乘,结果就是double。

3.16java没有sizeof

一、由于全部数据类型在全部机器中的大小都是相通的。

3.17操做符小结

一、若是两个够大的int值执行乘法运算,结果就会溢出。

二、除boolean之外,任何一种基本类型均可以经过类型转换变为其余基本类型。

相关文章
相关标签/搜索