各种运算符,周期性

1.MAC:网卡物理地址(内存中占48位,十六进制表示)
00-1D-0F-1A-5A-BE

2.IP地址:(内存中占32位,十进制表示)
192.168.123.41

3.计算机起始时间:1970.01.01


byte,short,char按照int运算


i++,后++,先将i的值作为整个表达式的值,然后将i增加1.

++i,先++,先将i增加1,然后将i的值作为整个表达式的值.



各种运算符


package day03;

public class LogicalDemo {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		int age = 12;
		char sex = '男';
		boolean isChild = age < 14; // true
		boolean isMan = sex == '男'; // true
		boolean isBoy = isChild && isMan;// true,&&逻辑与
		boolean isGirl = isChild && !isMan;// false,!逻辑非
		boolean isKid = isBoy || isGirl; // true,||逻辑或
		System.out.println(isGirl);

		// && 与 &  和
		// &&大部分情况下用
		int i = 1;
		if (i != 1 && (i++) == 2) { // &&短路,不运行(i++)==2
			System.out.println(i);// 不运行
		}
		System.out.println(i);// 1

		if (i != 1 & (i++) == 2) { // &非短路,运行(i++)==2
			System.out.println(i);// 不运行
		}
		System.out.println(i);// 2

		// || 与 |  或
		i = 1;
		if (i == 1 || (i++) == 2) { // 短路,只执行i==1
			System.out.println(i);// 1
		}
		if (i == 1 | (i++) == 2) { // 非短路,所以表达式都检查
			System.out.println(i);// 2
		}

		int a=1;
		a=a++; //后加加; 首先先赋值左边a=1,然后后加加a++=2,再然后a冲减回1;
		System.out.println(a); //1
		/*
		 * 也可以将写成:
		 * int a=1;
		 * a=
		 *	 a+1;
		 * System.out.println(a);
		 * 
		 * 在int a所在行加入断点->调试,可以直观的看到a=a++;的运行顺序;
		 */
		
		int b=1;
		b=a++;//后加加;先赋值后b=1,后加加a=2;
		System.out.println(a);//2
		System.out.println(b);//1
		
	}

}



package day03;

public class LongDemo {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		long max=0x7fffffffffffffffL;//1个7,15个f,long类型max,后缀为L/l
		long years=max/1000/60/60/24/365; 
		//1秒=1000毫秒,max是long类型,1000等数字默认是int类型,计算后自动转换为long类型
		System.out.println(years); //292471208
		long now=System.currentTimeMillis();
		//系统当前时间毫秒数,从计算机起始时间(1970.01.01)算起
		System.out.println(now); //1389074584390,约44年
		
		long year=1970+now/1000/60/60/24/365;
		//不能使用int year,因为now为long类型;粗略计算,没考虑闰年
		System.out.println(year);  //2014,当前年份	
		int year1=1970+(int)now/1000/60/60/24/365;
		System.out.println(year1);//1970,错误,因为优先对now进行int类型转换造成溢出
		int year2=1970+(int)(now/1000/60/60/24/365);
		System.out.println(year2);//2014
		
		long l=1024*1024*1024*4; //没有后缀L/l,结果仍然为int类型
		long lo=1024L*1024*1024*4;
		//long类型的1024与int类型数字计算后仍为long类型;后缀L/l要加在第一个数字后面
		long lon=1024*1024*1024*4*2L;
		//long类型的2与int类型数字1024*1024*1024*4(溢出为0)计算仍为0;后缀L加在最后面,仍可能出错
		System.out.println(Long.toBinaryString(l));//64个0,溢出
		System.out.println(Long.toBinaryString(lo));//100000000000000000000000000000000
		System.out.println(Long.toBinaryString(lon));//0,溢出

		double d=5/2;  
		//2.0,因为5/2是int类型,所以结果为2,所以double类型的d为2.0
		double dd=5D/2; 
		//2.5,double类型的5.0与2计算后为2.5
		double ddd=5.0/2;//2.5
		double dddd=(double)5/2;//2.5

		char c='A';
		char x=1;
		//char ch=c+x;//错误,c和x实际为int类型;需要对整个表达式进行强制转换
		char ch=(char)(c+x); //B
		int in=c+x;//66
		
		//byte,short,char按照int运算
		
		byte[] mp3=new byte[1024*1024*5]; //5Mbyte
		
		int i=0%3;//0,取余;0%n,(n!=0),取余都是0
		int ii=2%5;//2,正数取余数为正数
		int iii=-2%5; //-2
		System.out.println(iii);
		
		/*
		 * 以分母为基数,取余数呈现周期性;余数一定小于分母;
		 * 0%5	0
		 * 1%5	1
		 * 2%5	2
		 * 3%5	3	
		 * 4%5	4
		 * 5%5	0
		 * 6%5	1	
		 * ...	...
		 * 
		 */
		int r=(int)(System.currentTimeMillis()%5);
		System.out.println("r="+r); //r=[0,5)的随机数
	}

}



周期性变化


package day03;

import java.util.Scanner;

public class OptDemo {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		int i = 0;
		int a = i++ % 5; // a=0
		a = i++ % 5; // a=1
		a = i++ % 5; // a=2
		a = i++ % 5; // a=3
		a = i++ % 5; // a=4
		a = i++ % 5; // a=0
		a = i++ % 5; // a=1
		a = i++ % 5; // a=2
		a = i++ % 5; // a=3
		a = i++ % 5; // a=4
		// ...
		// 0~n周期性变化,(n+1)为分母取余;

		
	}
}
























  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值