JAVA 基础知识(二)

JAVA 基础知识(二)

一、进制

  • 进制:就是一种进位制

就是进位制,是人们规定的一种进位方法。 对于任何一种进制–X进制,就表示某一位置上的数运算时是逢X进一位。
二进制就是逢二进一,八进制是逢八进一,十进制是逢十进一,十六进制是逢十六进一。

二进制数据:由0 1组成 以0b开头

八进制数据:由0-7组成 以0开头

十进制数据:由0-9组成 整数默认是十进制的

十六进制数据:0-9 A-F组成 0x100 以0x开头

二、进制转换法

  • 位权展开法

  • 8421码是最常用的BCD码

三、原码,反码,补码

  • 计算机底层运算时,他用的是补码来运算的,我们看到的是原码
  • 一个数据的二进制表现形式,但是会有符号位
  • 最高位作为符号位:0表示正数,1表示负数;其余作为数值位
  • 正数的原码反码补码,都是一样的
  • 负数的反码:在其原码基础上,符号位不变,其余位取反,1变0,0变1.
  • 负数的补码:在其反码的基础上,末位+1

四、变量

  • 变量:在程序执行过程中,其值可以发生变化的量;

  • 变量,其实就是在内存中开辟一小块空间。

  • Java中变量的定义方式:数据类型 变量名=值

生活中的例子:苹果的价格 price=3.5/kg price=2.5/kg

  • 数据类型:限定这个数据的范围,限定你是何种类型
  • 数据类型:基本数据类型 和 引用数据类型
  • 基本的数据类型:四类八种
  • 整数型
    • byte 占1个字节(8bit) 所代表的整数范围 -128(只有补码 10000000)----- 127 思考:为什么 byte范围是-128-----127 呢?
    • short 占2个字节(16bit) -2^15~ 2^15 - 1
    • int 占四个字节(32bit) -2^31 ~ 2^31 - 1
    • long 占8个字节(64bit) -2^63 ~ 2^63 - 1
  • 浮点型
    • float 占4个字符(32bit) -3.40310^38 ~ 3.40310^38
    • double 占8个字节(64bit) -1.79810^308 ~ 1.79810^308
  • 布尔型
    • boolean 占1个字节
  • 字符型
    • char 占2个字节 2(16bit) 使用单引号,引起来的单个字符。0 ~ 2^16 - 1 = 65535
  • 定义变量的注意事项
    • 在同一作用域不能定义同名变量,所谓作用域,指的是,同一对大括号,用扩起来的范围。
    • 变量必须赋值才能使用
    • 定义float类型的变量
  • 练习1:
class  BianLiang{
	public static void main(String[] args) {
		//变量名,符合我们之前的通用规则人,一般小写,studentName
		byte a=-128;
		byte b=127;
		
		short c=300;
		int d=20000;
		//定义long类型的变量,注意值的后面加上一个后缀L表示这是一个long类型的值
		long num=200000L;
		//定义float类型的变量时,注意值的后面加上一个后缀F表示这是一个float类型的值
		float f=3.14F;
		double price=5.2;
		//定义布尔类型的变量,值就俩个 true 和 false
		boolean flag=true;
		boolean falg2=false;
		//定义字符类型的变量,注意只是单引号引起来的单个字符
		char ch='a';
		char ch2='好';
		//根据变量名,来输出不同的值

		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
		System.out.println(d);
		System.out.println(num);
		System.out.println(f);
		System.out.println(price);
		System.out.println(flag);
		System.out.println(falg2);
		System.out.println(ch);
		System.out.println(ch2);
	}
}
  • 练习2:
class  BianLiang2{
	public static void main(String[] args) {
		//定义变量的注意事项
		//1.在同一作用域里面,所扩充起来的范围。
		//作用域:同一对大括号,所括起来的范围。

		int a=100;
		//int a=100;报错
		a=200;//重新赋值

		int num;
		//2.变量必须赋值,才能使用
		num=20;
		System.out.println(num);
		System.out.println(a);
	}
}

五、隐形转换

class  DataType{
	public static void main(String[] args) {
		byte a=1;
		byte b=2;
		short c=3;
		long d=1L;
		float f=3.2F;
		//double g=1.2;
		//数据类型的隐形式转换(数据类型的自动提升)
		//当byte short char 类型的变量,在参与运算时,会自动提升为int类型,
		//如果还有 long float double 类型的变量参与运算则会相应的提升为 long float double 类型

		//byte1个字节
		//int 4个字节
		//long8个字节float4个字节float所表示的范围要比long表示的范围要大
		float sum=a+b+c+d+f;
		System.out.println(sum);
	}
}

六、强制转换

class DataType2{
	public static void main(String[] args) {

		byte a=125;
		byte b=118;
		//如果你一定要拿一个字节来接收结果,可以,你可以进行强制类型转换
		//强制类型转换:丢弃掉多余字节,只保留目标字节,这样做,有可能会造成精度损失。一般不建议使用,除非你有特殊需求
		byte sum=(byte)(a+b); //byte参与运算结果提升为int类型,是4个字节,那么你要强转成byte类型,那就会丢弃前三个字节,保留一个字节。

		System.out.println(sum);

		double num=5.23528;

		int n=(int)(num);  //把double类型,强转成int类型,就会丢弃掉小数部分。
		
		System.out.println(n);

	}
}
  • 强制转换的格式
    • 目标数据类型 变量名=(目标数据类型)(被转换的数据);
class DataType3 {
	public static void main(String[] args) {
		//整数默认是int类型,小数默认是double类型
		System.out.println(200);
		System.out.println(3.25);



		float f=3.25F; //加后缀

		//或者这样写
		float f2=(float)3.5888;

		System.out.println(f);
		System.out.println(f2);


		// byte b =130; 报错,超过了byte所代表的整数范围

		byte b =(byte)130; 

	   System.out.println(b); // -126


	}
}
class  DataType4{
	public static void main(String[] args) {


			byte b1 = 3;
			byte b2 = 4;
			//类型的隐式转换
			//byte b3 = b1 + b2; 报错

			//常量优化机制,当多个常量参与运算,他会把结果先算出来,看有么有在这个数据类型的范围内,如果在就不报错,不在就报错了
			byte b4 = 3 + 4;
		   System.out.println(b4);

		   char ch='你'; //Unicode编码 GBK(ANSI) 一个汉字占两个字节,char类型也就是两个字节,所以就可以

		    System.out.println(ch);

		//数据类型的隐式转换(数据类型的自动提升)
		//当 byte short char 类型的变量,在参与运算时,会自动提升为int类型,
		//如果还有  long float double 类型的变量参与运算则会相应的提升为 long float double 类型

		char ch1='a'; //97 英文字符在参与运算时,会对照ASCII码表中该字符的10进制值
		//记住 'a' 97 'A' 65  '0' 48

		int sum=ch1+1; 

		System.out.println(sum); //98
	}
}

七、常用的ASCII码

‘0’ 48 ‘A’ 65 ‘a’ 97

为了便于查询,以下列出ASCII****码表:第128~255号为扩展字符(不常用)
ASCII码键盘ASCII 码键盘ASCII 码键盘ASCII 码键盘
27ESC32SPACE33!34"
35#36$37%38&
3940(41)42*
43+4445-46.
47/480491502
513524535546
55756857958:
59;60<61=62>
63?64@65A66B
67C68D69E70F
71G72H73I74J
75K76L77M78N
79O80P81Q82R
83S84T85U86V
87W88X89Y90Z
91[92\93]94^
95_96`97a98b
99c100d101e102f
103g104h105i106j
107k108l109m110n
111o112p113q114r
115s116t117u118v
119w120x121y122z
123{124|125}126~

八、字符

运算符、拼接符,傻傻分不清楚

  • +号的作用
  • 作用1:充当相加的作用,也就是个数学运算符
  • 作用2:起拼接符的作用,当+号运算俩端,只要任意一端是个字符串,就会起拼接作用,把俩端内容拼接起来
		System.out.println("5+5="+5+5);//5+5=55
		System.out.println(5+5+"=5+5");//10=5+5

九、运算符

  • 运算符:对变量或常量进行运算的符号
    • 算术运算符
    • 赋值运算符
    • 比较运算符
    • 逻辑运算符
    • 位运算符
    • 三元运算符

9.1 算数运算符

学到这,晚上睡觉都睡不着😭😭,各种++,–,一起先来看看概念吧

  • ++,–运算符的作用:自加(++)自减(–)运算

  • ++:自加。对原有的数据进行+1

  • –:自减。对原有的数据进行-1

  • –;++;单独使用时,放前后没有区别;

  • 混合使用时:++放在后面,先使用,后运算,++放在前面,先运算后使用

  • 好了,看着概念是不是很简单,让我们先来练练题

int a=1;
int b=2;
	a++;
	++b;
System.out.println(a++);//a=2
System.out.println(++b);//b=4
  • 最基础的,是不是很简单,俺们继续:
int a=9;
a++;
++a;
System.out.println(++a+a++);//24
  • 接着来了哦
int a=2;
a++;
System.out.println(++a+a++);//7
System.out.println(a++);//5
System.out.println(a++);//6
int i=5;
int a=++i+(i++)+(i++)+(i++)+(++1)+(++1);
System.out.println(i);//49
  • naoguazi是不是嗡嗡的,让我们继续
int x=10,y=10;
System.out.println((x++)>10?(++y+(++x)):(--y+--x));//19

以上习题特别感谢@naoguaziteng提供, 在不了解三元运算符的时候,上面最后一题让我百思不得其解;

  • 还有,我们接着继续;
int a = 10;
int b = 10;
int c = 10;

a = b++;
c = --a;
b = ++a;
a = c--;

//a=9
//b=10
//c=8
  • 终极习题:
int y=1;
int r=1+(y++)+10-(++y)+2-(y--)+1+(--y)+5;
System.out.println(r);//r=15
System.out.println(y);//y=1

练习就到这里了,搞了这么多题,想必现在脑瓜子嗡嗡的吧,别急,慢慢来,以后如果有遇见更有意思的题会跟大家分享

9.2 赋值运算符

  • 赋值运算符都有哪些?=,+=,-=,*=,/=,%=
  • 基本的赋值运算符:=
  • 把=右边的数据赋值给左边。
  • 赋值运算符要求左边的数据必须是一个变量
int y=10;
y=y+5;
//等价于
y+=5;

9.3 关系运算符

  • == ,!= , < , > , <= , >= , instanceof;
  • 无论你的操作是简单还是复杂,结果是boolean类型。
class BJYSF {
	public static void main(String[] args) {

		//A:比较运算符有哪些
	  //== ,!= , < , > , <= , >= , instanceof(后面讲解)
      // == 和 = 的区别

	  //比较运算符的运算结果,是布尔类型

		int x=20;
		int y=10;
	   boolean b=5<3; //false
	           b=5==5; //注意比较两个数是否相等,用 ==号
			   b=x!=y;
	  
		System.out.println("b:"+b);

		System.out.println(10>10);

		
		System.out.println(x==y);

	}
}


是复杂,结果是boolean类型。

class BJYSF {
	public static void main(String[] args) {

		//A:比较运算符有哪些
	  //== ,!= , < , > , <= , >= , instanceof(后面讲解)
      // == 和 = 的区别

	  //比较运算符的运算结果,是布尔类型

		int x=20;
		int y=10;
	   boolean b=5<3; //false
	           b=5==5; //注意比较两个数是否相等,用 ==号
			   b=x!=y;
	  
		System.out.println("b:"+b);

		System.out.println(10>10);

		
		System.out.println(x==y);

	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值