Java学习二天了

前言

第一天还是带着兴奋的,不是特别困,不过晚上回来1点就睡了,开学以来睡得最早的一次没有之一!!

今天就不一样了,早上不困,中午还清醒,可到了下午就奔溃了,持续晕乎了一个小时,不过没睡着。教训中午还是要趴着睡觉的,很管用的!!

进制转换

任意进制—转换为十进制
位权展开发(d^n)
十进制----转换到任意进制
口诀:除积取余,商为零,余数反转。

源码 反码 补码

源码:最高位为符号位,“0”为正,“1”为负,其余位表示数值大小。
反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1。

变量

含义:在程序执行的过程中,在某个范围内其值可以发生改变的量(例如:苹果的价钱),变量其实是内存中的一小块区域

为什么要定义变量:
用来不断的存放同一类型的常量,并可以重复使用;

变量的定义格式:
数据类型 变量名 = 变量值 ;
为什么有数据类型:
变量是内存中一小块区域,用数据类型规定开辟内存区域的大小;

Java数据类型的分类

包括:基本数据类型 和引用数据类型

基本数据类型
(1): 数值型
			整数型			字节数			范围
				  byte 		 1(8bit)       	-128  ~  127
				  short		 2(16bit)	   	-2^15 ~  2^15 - 1
				  int		 	4(32bit)      	-2^31 ~  2^31 - 1
				  long		 8(64bit)      	-2^63 ~  2^63 - 1
			浮点数
				 float       		4(32bit)      -3.403*10^38  ~ 3.403*10^38
				 double     	8(64bit)	  -1.798*10^308 ~ 1.798*10^308
	(2): 字符型   char       		 2(16bit)	   0 ~ 2^16 - 1 = 65535
	(3): 布尔型   boolean     		1

	整数默认是int类型的 , 浮点数默认是 double类型的 
	注意:long 10L;和float 1.1F    因为有默认		
		byte a=10;
		short b=20;
		long num=10L;
		float f=1.1F;
		double dd=1;

使用变量注意事项

  1. 变量在使用之前必须赋值。变量必须先赋值后使用
  2. 重写赋值,会覆盖掉旧值
  3. 在同一个作用域里面不能定义两个同名变量(大括号的范围就是这个变量的作用域)
  4. 在一行上建议只定义一个变量可以定义多个,但是不建议;

数据类型的隐式转换

自动类型提升:byte short char 在参与数学运算时,会自动提升为int类型,如果还有long ,float double 参与运算则会相应的提升为 long float double ,布尔类型不参与数学运算,byte short char 之间不发生转换
boolean类型不能转换为其他的数据类型;

数据类型的强制转换

强制类型转换:强制将一个数据,转换成我们要的数据类型,强制类型转换,有可能会发生精度损失的问题

class  Demo3{
	public static void main(String[] args) {
		byte a=1;
		byte b=127;
		short r=(short)(a+b);
		System.out.println(r);
	}
}

Java语言中的字符char可以存储一个中文汉字吗?为什么呢?
答案:可以,Java语言采用Unicode编码的,其每个字符占两个字节,每个汉字需要两个字节。

自动位提升和常量优化机制

	byte b1 = 3;
	byte b2 = 4;
	byte b3 = b1 + b2;
	byte b4 = 3 + 4;
	
	class  Demo123
{
	public static void main(String[] args) 
	{
		byte b1 = 3;
		byte b2 = 4;
		byte b3 = b1 + b2;
		System.out.println(b3);
	}
}


class  Demo123
{
	public static void main(String[] args) 
	{	
		byte b4=3+4;
		System.out.println(b4);
	}
}
	

分别运行会发现b3出错,b4正确。原因:b1和b2相加运算自动位提升为int 类型,而b3 为float放不下提示出错; b4不会报错 原因:常量优化机制,多个常量相加时,他会先算出结果,看没有在这个数据类型的范围内,如果在,就不报错,如果不在就会报错

字符字符串参与运算

+号,可以当做一个数学运算符来用,其相加的作用,其还可以起另外一个作用,当连接符来使用。
当+号运算两端只要任意一端是一个字符串,那么加号就起连接符的作用,就会将两端的内容拼接起来,形成一个新的字符串

class  Demo6{
  public static void main(String[] args) {
  	System.out.println("Hello World!"+100); //"Hello World!100"
  	System.out.println("Hello World!"+100+33);//"Hello World!10033"
  	System.out.println("Hello World!"+"10033");// "Hello World!10033"
  	System.out.println(100+"Hello World!");//"100Hello World!"
  	System.out.println(100+"Hello World!"+100+33);//100Hello World!10033
  	System.out.println(100+11+"Hello World!"+100+33); //111Hello World!10033 

  	System.out.println("5+5="+5+5);//"5+5=55"
  	System.out.println(5+5+"=5+5");//"10=5+5"

  }
}

算数运算符基本用法

含义: 对常量和变量进行操作的符号称为运算符
分类:
算术运算符: + , - , * , / , % , ++ , –
赋值运算符
比较运算符
逻辑运算符
位运算符
三元运算符

算数运算符

  1. 整数相除只能得到整数。如果想得到小数,请使用浮点数
  2. /获取的是除法操作的商,%获取的是除法操作的余数
  3. %运算结果的符号,取决于参与运算是左边的符号
class  MathYSF{
	public static void main(String[] args) {
		int a=10;
		int b=3;
		System.out.println(a/2); //5
		System.out.println(a/b); //两个整数相除如果不能整除取,取的是商
		System.out.println(a%b); //取余数
			} 
}

++ --运算符的使用

++(自加):对原有的数据进行+1
–(自减):对原有的数据进行-1

注意:
1.单独使用:
放在操作数的前面和后面效果一样。(这种用法是我们比较常见的)
2.参与运算使用:
放在操作数的前面,先自增或者自减,然后再参与运算。
放在操作数的后面,先参与运算,再自增或者自减。

class  MathYSF{
	public static void main(String[] args) {
		int num=1;
		num++;
		++num;
		num--;
		--num;
		  System.out.println(num);
	} 
}		

答案:1

class  MathYSF{
	public static void main(String[] args) {
		int num=1;
		int rr=3+(num++)-1+(num--)+1+(++num)+2+			(++num)+10;
		System.out.println(rr);// 23
		System.out.println(num);//3 

	} 
}

最终输出:rr=23,num=3

赋值运算符

包括: =, +=,-=,*=,/=,%=;

class  FZYSF{
	public static void main(String[] args) {
		byte num=10;		
		num+=100;//num=num+10等价于num+=10; 累加
		System.out.println(num);

	}
}

答案:110
注意:会自动帮你强制类型转换,它会判断累加完的结果,在不在这个数据类型的范围内,如果不在会自动帮你强制类型转换

比较运算符

包括: == ,!= , < , > , <= , >= , instanceof
注意
比较运算符的等于是==不是=!!
结果都是boolean类型

class  BJYSF{
	public static void main(String[] args) {
		int a=10;
		int b=20;
		boolean flag=a==b;
		        //flag=a>b;
				//flag=a<=b;
				//flag=a!=b;
		System.out.println(flag); 
		
	}
}

答案分别是;
false false ture ture

逻辑运算符

包括:&(并且) , |(或者) , !(非) , ^(异或) , &&(短路与) , ||(短路或)
注意逻辑运算符一般用于连接boolean类型的表达式或者值。
在Java中我们要表示一个数大于3并且小于6 ,不可以写成3<x<6,应该写成 x>3 & x<6 。

逻辑运算符的基本语法

! 取反 true变false false 变true
& 运算两端,只要任意一端是false 其最终结果都是false 只有两端都位true最终结果才是true
| 或者 运算两端只要任意一端,为true 其最终结果都是true,只有两端都是false其最终结果才是false
^(异或) 不同为true相同为false

** // &(并且) , |(或者) 和 &&(短路与) , ||(短路或) 的区别**

class LJYSF {
	public static void main(String[] args) {
		int a=10 ;
	    int b=20;
		boolean flag=a==10&&(b++)>10;  //& 两端都需要运算  && 只要左端为false 右端不需要运算,只有左端为true 右端会去运算
		System.out.println(flag);
		System.out.println(b);

		int a=10 ;
	    int b=20;
 
		boolean flag=a==10||(b++)>10;  // | 两端都需要运算,|| 只要左端为true 右端就不需要运算,只有左端为false 右端还是要运算的

		System.out.println(flag);
		System.out.println(b);         
	}
}

位运算符

包含:&(与),|(或),^(异或) , ~(按位取反) , <<(左移) ,>>(右移) ,>>>(无符号右移)
注意位运算是直接对二进制补码进行运算。

值交换:

class  ValueChange{
	public static void main(String[] args) {
		int a=10;
		int b=20;
        //让两个变量的值进行交换
		//重新赋值
		//a=20;
		//b=10;
		//方式1 采用中间变量来做 开发中常用,需要掌握
		
		int t=a;
		a=b;
		b=t;
		System.out.println("a是:"+a);
		System.out.println("b是: "+b); 

		//方式2 一个数被另外一个数位异或两次,该数不变
		/*
		a=a^b; 
		b=a^b; //b=a^b^b 
		a=a^b; //a=a^b^a 
		*/
		//方式3
		/*
		a=a+b;
		b=a-b;
		a=a-b;
		*/

		//方式4
		//a=(a+b)-(b=a);
		System.out.println("a是:"+a);
		System.out.println("b是: "+b);

	}
}

提倡用中间值进行交换即方法一最常用。

三元运算符的基本用法

三元(三目)运算符的格式
(关系表达式) ? 表达式1 : 表达式2;
int a=(10>20)?30:50;//a=50
三元运算符的执行流程
计算关系表达式的值,如果为true, 运算后的结果是表达式1; 如果为false,运算后的结果是表达式2;

class  SanYuanYSF{
	public static void main(String[] args) {
		//求三个数的最大值
		int a=10;
		int b=20;
		int c=100;

		int max=a>b?a:b;
        int maxmax=max>c?max:c;
		System.out.println("最大值是"+maxmax);
	}
}

注意三元表达式不建议嵌套,阅读性不好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值