java第3天----进制转换,数据类型,运算符

进制转换

1.遇几进一就是几进制;
2.常见的有:十六进制,十进制,八进制,二进制,计算机能够识别的是二进制
3.八进制和十六进制是为了更好地表示二进制

计算机的存储单位

1 Byte = 8 bit
1kB = 1024B
1MB = 1024GB
1TB = 1024GB
1PB = 1024TB
虽然最小的是bit,但是我们一般常说的最小单位是Byte(字节)

数据类型

简单数据类型
数值型
名称占用内存表示大小
byte一个字节[-27,27-1]
short两个字节[-215,215-1]
int四个字节[-231,231-1]
long八个字节[-263,263-1]
浮点型:小数
名称占用内存表示大小
float单精度四个字节采用科学计数法:3.4E38
double:双精度八个字节采用科学计数法:1.4E308
布尔类型
名称占用内存表示大小
boolean一个字节只有两个:true(真)和false(假)
char

常规理解是一个字节----根据ASCII
常用字符集:1.ASCII,美国–2.GBK/GB2312,中国–3.IS08859,欧洲
4.UTF-8,国际通用–5.unicode,计算机内部标准
编码:将字符转换成二进制
解码:将二进制转回字符
乱码:编码和解码使用的字符集不同导致的

public static void main (String[] args) {
		//数值型
		/*
		 * 区分赋值和初始化,单独赋值
		 * 赋值:一般是在定义好一个变量后,单独赋值
		 * 初始化:一定是在定义变量的同时完成赋值
		 */
		byte a = 12;//定义一个Byte型的变量a并初始化成12
		a = 14;//赋值
		System.out.println("a:"+a);//+号的作用:1.运算 2.当使用字符串与其他的数据类型变量进行相加时,+的功能是拼接
		short b = 23;
		int c = 32;
		
		//浮点型
		//求float型,double的最大值
		System.out.println(Float.MAX_VALUE);//float最大值3.4028235E38
		System.out.println(Double.MAX_VALUE);//double最大值1.7976931348623157E308
		
		float d = 3.4f;//默认将小数认为是double型,如果要表示是float型在后面加f
		double e = 4.5;
		
		//布尔型
		boolean f = true;
		
		//字符型
		char g = 'a';
		System.out.println((int)g);
	}
引用数据类型

数组等一些指向性的数据类型,暂时不讲

类型转换

根据等级的高低从低到高:byte,char,short,int,long,float,double
强制类型转换:从高类型转换到低类型—可能造成数据损失
自动类型转换:从低类型转成高类型----不会有数据损失

public static void main(String[] args) {
	//自动类型转换
	byte a = 12;
	short b = a;
	System.out.println("a:"+a+"   b:"+b  );
	
	//强制类型转换
	short c = 256;//00000001 00000000
	byte d = (byte)c; //	 00000000造成数据丢失
	System.out.println("d:"+d);
	
	//实例,
	int e = 128;
	byte f = (byte)e;
	System.out.println(f);//-128
	//数字默认是int型的
	byte num = 4;
	num = (byte)(num + 3);
	}

运算符:

从功能分
名称例子
算数运算符± * / 自增:++ 自减:—
.赋值运算符*= /= += -=
关系运算符< > <= >= 不等于!= 等于==
逻辑运算符&&{与} ||(或) !(非)
位运算符直接操作二进制的位 ~(取反) ^(按位异或) &(按位与) |(按位或)
移位运算符直接操作二进制的位 >>1 右移一位代表除以2,<<1左移一位,代表乘二
从操作的元素区分
名称例子
1.一元运算符++ – +(正) -(负) ! ~
2.二元运算符
3.三元运算符?: 三目运算符
public static void main (String[] args) {
		System.out.println(3+4);
		System.out.println(3*2);//遵守普通的运算规则
		System.out.println(-3/2);//遵守普通的运算规则,只适用于整数
		System.out.println(-3%-2);//取余数时,余数的符号与被除数符号相同
		
		//++(自增)  --(自减);每次都会自动加一或者减一
		//主要研究++
		//两种情况
		//++在前:变量会首先自身加一,在使用加一后的至参与整体运算
		//++在后:变量首先参与整体的运算,然后在自身加一
		int a = 2,b,c = 3,d;
		b = a++;//++在后		b = 2  a = 3
		d = ++c;//++在前		c = 4 d = 4
//		 * 2.赋值运算符 		= *= /= += -=
		//都是将右边的值赋值给左边
		int f = 4;
		//定义的变量一定要先给值,在参与运算
		f += 3;//f = f + 3;
		/*
		 * 练习一: 
		 */
		int n = 2,m = 3, u = 1, o = 0;
		o = n++ - --m + (u++ - n--);
		System.out.println(n+" "+m+" "+u+ " "+o);
		/*
		 * 实例分析:先考虑优先级,优先级相同在考虑结合性,先考虑优先级低的,使用排除法将优先极高的找出来,在一步步运算
		 * 1.先考虑等号,在使用排除法,根据右结合律,先算=的右边
		 * 2.在考虑()外的+ -,根据左结合性
		 * 3.先算n++ n=3  n++=2
		 * 4.算--m  m=2   --m=2
		 * 5.算()(1-3)  u=2  n=2
		 * 6.算2中的-+    2-2+(1-3)=2
		 * 7.算=  将值赋给o=-2
		 */
//		 * 3.关系运算符		< > <= >= !+ ==
		//关系运算符的结果只有俩,true和false
		System.out.println(3<4);//true
		System.out.println(3==4);//false
		
//		 * 4逻辑运算符		&&{逻辑与}  ||(逻辑或)  !(非)
		//注意点:结果只有true和false;参与运算的元素也只能是true和false;
		/*
		 * &&:全真则真,一假则假
		 * ||:全假则假,一真则真
		 * !:真则假,假则真,
		 */
		System.out.println(false&&true);//false
		System.out.println(true&&true);//true
		System.out.println(false||true);//true
		System.out.println(!false);//true
		System.out.println(3>4 && 5<3);//false 
		System.out.println("aaaaaaaaaaaaaaaaaaa");
		a = 2;
		System.out.println(a < 3 || a++ > 4);
		System.out.println(a);
		
		/*
		 * 短路与:当有多个与相连时,从左往右,只要有一个false,就会停止运算,整个结果就是false
		 * 短路或:当有多个与相连时,从左往右,只要有一个true,就会停止运算,整个结果就是true
		 * 所谓停止运算,就是代码不再执行,但是如果后面又有其他逻辑运算符,将前面连续的只算出后,还要进行当前运算符的运算。
		 */
		System.out.println(false&&true&&true&&true);
		int bb = 2,cc = 3;
		boolean isture = 3<1 && 4>3 && bb++ >1 && 2<4 || cc++<6;
		System.out.println(isture+"bb"+bb+"cc"+cc);
//		 * 5.位运算符			直接操作二进制的位 ~(按位取反)  ^ (按位异或) &(按位与)  |(按位或)
		/*
		 *  ~(按位取反):1就是0,0就是1;
		 *  ^ (按位异或):参与运算的当前位,相同则是0,不同则是1
		 *  &(按位与):全1则1 ,有0则0
		 *  |(按位或):全0则0,有1则1
		 */
		/*
		 * 实例:11和7
		 * 1011    11
		 * 0111    7
		 * 
		 * 0011    &
		 * 1111    |
		 * 1100		^
		 * 
		 * 按位取反
		 * 1011    11
		 * 0100    7    ~
		 */
		//实现两个数的交换  x = 3 ,y = 3
		int x = 3,y = 4,temp = 0;
		temp = x;
		x = y;
		y = temp;
		//上面的弊端:要借助于三方的变量
		//第二种方法:使用^,
		x = x ^ y;
		y = x ^ y;
		x = x ^ y;
		System.out.println("x:"+x+" y:"+y);
		/*
		 * 为什么要使用位运算符进行运算?
		 * 因为位运算符直接操作的是二进制,运算的效率高,速度快。
		 */
				
		
//		 * 6.移位运算符		直接操作二进制的位 	>>1 右移一位代表除以2,<<1左移一位,代表乘二}
		//注意:先右移后左移不一定得到原来的数,先左移后右移也不一定得到原来的数,   >>>无符号右移一位
		int z = 5>>1;//0101 右移一位 0010 
		System.out.println(z);//2
		z = z<<1;//0010 左移一位 0100  
		System.out.println(z);//4
//		* b:从运算操作的元素来区分
//		 * 3.三元运算符:?:      三目运算符
		//表达式:由变量,常量以及运算符组成的式子
		//语句:表达式+;    空语句:;
		//?:   三目运算符
		//组成:表达式1>表达式2?值1:值2
		//解释:当表达式1>表达式2时,结果就是1,不然结果是2
		int r = 4,i = 5;
		int q = r>i?r:i;
		System.out.println(q);
		}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值