3、控制程序流程

对应第3章

别名

类对象互为别名时它变它也变。

class Tank {
  int level;
}   
public class Assignment {
  public static void main(String[] args) {
    Tank t1 = new Tank();
    Tank t2 = new Tank();
    t1.level = 9;
    t2.level = 47;
    t1 = t2;  
    t1.level = 27;
    print("3: t1.level: " + t1.level +
          ", t2.level: " + t2.level);
  }
} /*  最后一个输出t1.level: 27, t2.level: 27 */
 t1 = t2;让t1 t2互为别名,实质是指向相同对象。

随机数

头文件:java.util.Random
法一:Random rand=new Random(); //默认系统时间作为种子
法二:Random rand=new Random(44); //自己定义种子
rand.nextInt()、 rand.nextInt(10) //产生[0,10)间随机整数
rand.nextLong()、rand.nextFloat()、rand.nextDouble()
rand.nextBoolean()
求随机整数,例如int i=rand.nextInt()%100;

头文件:java.lang.Math.Random
[0,1)间随机double值:double t=Math.random();

判断对象是否相等

例:

    Integer n1 = new Integer(47);
    Integer n2 = new Integer(47);
    System.out.println(n1 == n2);  //false
    System.out.println(n1.equals(n2));  //true
    int n3=47,n4=47;
    System.out.println(n3 == n4);  //true
   //System.out.println(n3.equals(n4));  // 写成int 不能用equals()方法
说明:==、!=比较的是对象的句柄,equals()比较的也是对象的句柄。但是大多数java类库对equals()重写了让它实现比较对象的内容,包括Integer类等。

解决办法:
对于Java类库里类的对象,用equals()方法;对于写成int、double 等形式的,用==、!=;对于自己写的类,可以自己在类中重写equals()
例:自定义equals()
class Value {
int i;
public boolean equals(Value t)
{
if(i==t.i)
return true;
else
return false;
}
}

数的运算

转为二进制:
System.out.println(Integer.toBinaryString(-3));  //11111111111111111111111111111101
long l = -1;
System.out.println(Long.toBinaryString(l));

移位运算
移位符共有3种,<<     >>   >>>
<<:左移,左移一位表示乘2
>>:右移, 右移一位表示除2,高位补符号位
>>>:无符号右移,高位补0
移位符号可以与等号组合用。
int i=24; i >>2是个值,i >>=2;可以做个表达式

位运算符:
& 与  | 或  ~非   ^ 异或

数字的表示
数字前 0x表示十六进制,0表示八进制
数字后,long简写l或L,float简写f或F,double简写d或D
例:float f=1e-47f;  byte b=0x7f; 
易错:如果float f=1e-47;会出错。因为1e-47默认当做double处理,如果不加结尾的f相当于把double赋给float

调用static方法

自己写了很多源文件放在my_code文件夹下,现在需要在项目project1中用到源文件,举例:
有个源文件是Print.java,里面有static方法
public static void print(Object obj) {
System.out.println(obj);
}

调用:
先把my_code文件夹放在project1/src下,
调用的文件中两种写法:

若添加import my_code.*; 则如下    Print.print(“hello”);

若添加import static my_code.Print.*;(即一直import到类名),调用如下直接用方法名 print(“hello”);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值