JAVA基础复习day02+day03

JAVA基础复习day02

关键字

1.概念

	关键字--在java中具有特殊功能的单词
	53个关键字,全部都是小写
	const、goto(新的jdk版本中算作关键字) 

超详细 java中50个关键字以及各自用法大全

标识符

1.概念

      	标识符--在java中可以自定义的名称

2.组成范围

	a.各国常见文字  b.数字(0~9) c.特殊符号(_、$(慎用---内部类使用))

3.命名规则

	不能出现关键字、不能以数字开头

在组成范围内的内容且遵守命名规则的是符合java语法的标识符(合法)

4.驼峰命名法(是在标识符合法的基础上)

	1.类名/接口名---XxxYyyZzz
	2.方法名/变量名---xxxYyyZzz
	3.包名(包是用来区分同名类)
		单级---xxx  cn
		多级---xxx.yyy.zzz  duji.cn.day02

5.见名知意

注释

注释—用于解释说明的文字(不参与程序的执行)
格式
单行注释—//注释内容
多行注释—/注释内容/(可以嵌套单行注释不能嵌套多行注释)
文档注释—/*注释内容/(可以通过javadoc命令生成解释说明的文档打开index.html

javadoc 文件名.java
文档注释javadoc.java文件
index.html在这里插入图片描述

常量

概念

	程序运行过程中不发生改变的值

分类(字面值常量和自定义常量)

	字面值常量:
			整数常量 1000、1871
			小数常量 1.1 、0.345
			字符串常量 "12" "asdad"
			字符常量 '3' 'd'
			布尔常量 true false
			空常量 null
	自定义常量(wait 面向对象)				

整数表示方式

二进制 binary
		由0和1表示的数据 以0b开头的数据就是二进制数据 0b1000 
八进制 octal OCT
		由0~7表示数据 以0开头的数据就是8进制数据 01010 == 十进制520
十进制 decimal DEC

		由0~9表示数据 默认
十六进制 hexadecimal HEX
		由0~9, a-f(不区分大小写)表示数据 以0x开头的数据是十六进制数据

进制的转换

其他进制转换成十进制

	二进制 1010  十进制 1**0
	=1*2`3+**0*2`2+1*2`1+0*2`0=10
	十六进制 522 十进制 1314
	=5*16·2+2*16`1+2*16`0=1314
	项:每位数
	基数:X进制 基数就是X
	权:从右往左由0开始依次编号
	
	总结规律:
		项乘以基数为底的权次幂之和

十进制转成其他进制

	十进制 15 八进制 17
	       	    余数
	15/8=1········7  ↑
	1/8=1·········1  ↑
	十进制 21 八进制 15
	21/16=1·······5  ↑
	1/16=0·········1 ↑
	总结规律
	除基取余,直到商为0,余数翻转

任意进制之间的转换

	X进制转换十进制数据再把十进制数据转换成对应Y进制

	拆分组合
	八进制  12              1       	2
	二进制 001010          001     	010
	十六进制 6a             6        a 
	二进制 01101010        0110     	1010

有符号的数

计算机上所有的数据在底层都是以二进制数据的补码形式来表示
有符号的数

原码:符号位来表示正负,0代表正数,1代表负数
原码符号位数值位
500000101
-510000101
反码:正数的原码和反码保持一致,负数的反码是在原码的基础上符号位不变,数值位1变0,0变1
反码符号位数值位
500000101
-511111010
补码:正数的原、反、补、皆一致,负数是在反码的基础上末尾加1
补码符号位数值位
500000101
-511111011

小数
绝大部分的小数二进制是无线位数

变量

概念

在程序运行过程中可以改变的值
可以存储单个数据的容器
定义变量

	数据类型 变量名=初始化值;
	数据类型:限制数据变化范围
	变量名:区分其他变量
	初始化:给变量赋值

数据类型

数据类型分为俩种(基本数据类型和引用数据类型[类、接口、数组])

基本数据类型(4类8种)占用空间(字节)范围
整数型
byte字节型1-128~~~127(-27 ~27-1)
short短整型2-32768~~~32767(-215~ 215-1)
int整型4-231~ 231-1
long长整型8-263~263-1
浮点型
float单精度4-e38~e38(e是10)
double双精度8-e308~e308
布尔型
true
false
字符型
char20~65535

引用数据类型[类、接口、数组]

java是一门强类型语言,要求java中所有的数据都要有数据类型的表示。

Char

char c =‘中’

码表

文字转成底层数字—编码 文字转成底层数字的规则—码表

	ASCII(阿斯克码表 占用一个字节)---ISO8859-1(西欧码表 占用一个字节)
	BIG5(繁体中文--占用2个字节)      GB2312(简体中文--占用2个字节)
	GBK(国标码  占用2个字节)
	Unicode(编码体系       UTF-8(占用3个字 节)、UTF-16(占用2个字节)、UTF-32等等

ASCII码表
所有的完整码表默认兼容西欧码表
char c =“中”;以u8进行编码,底层占用3个字节
char c =‘a’;以u8进行编码,底层占用1个字节

转义字符
‘\t’—制表符空格 ‘\r’—回车 ‘\n’—换行

变量定义

注意:

	1.在java中初始化进行赋值时如果给定的是整数那么这个整数的类型默认是int类型
	2.在整数后面加上L/l,此时整数类型指定为了long类型
	3.在java中初始化进行赋值时如果给定的是小数那么这个小数的类型默认是double类型
	4.在整数后面加上F/f,此时整数类型指定为了float类型
	5.变量的定义分为声明和初始化俩个过程
	6.变量在哪定义在哪使用`
class JavaDemo{
public static void main(String[] args) {
//定义int类型的变量 
int i=1; 
//给定的是变量名称但是操作的是变量值 
System.out.println(i);
//定义long类型的变量
long l=234628348734L; 
System.out.println(l); 
//定义float类型的变量 
float f=2.12F; 
//如果变量没有被操作,那么变量可以先不给值
int i1;//声明  
i1=1;//初始化
System.out.println(i1);
	}
}

类型转换

byte a =1 ;,int b =2;
a+b=int 3;byte a =1 ;,int b =2; a+b=int 3;
变量的操作:
类型转换

	类型提升(默认 从小到大)
		byte-short、char-int-long-float-double
		byte、short、char无论做任何操作都会类型提升为int类型
	强制类型转换	
		目标类型 名称 =(目标类型)数据;
		可能会出现一些意想不到的数
class Demo{
	public static void main(String[] args) { 
		//定义变量 
		byte a=1; 
		int b=2; 
		byte c=a+b;//不兼容的类型: 从int转换到byte可能会有损失                
		//说明byte和short之间有类型提升 
	 	byte b=1;
		short s=b;
		System.out.println(s);//1
		//把字符转成对应的编码值再赋值给short变量 
		//如果字符转成的编码值大于short的范围就不能正常赋值 
		short s='达';//97
	 	//'0'---48  'A'---65   'a'---97 
	 	//把数字通过编码转成对应的字符再赋值给char变量
	 	char c=99;//'b'
		//没有类型提升,short类型的取值范围包含负数但是字符不能出现负数 
		short s=1; char c=s;/*错误: 不兼容的类型: 从short转换到char可能会有损失*/
		//char和int之间有类型提升
		char c='1';
		int i=c;
		System.out.println(i);//49
		//int和long之间有类型提升 
		int i=1;
		long l=i; 
		System.out.println(l);//1
		//long和float之间有类型提升
		//从整型到浮点型进行类型提升时可能会出现精度丢失问题 
		long l=13456287343L;
		float f=l; 
		System.out.println(f);//1.34562877E10
		//float和double之间有类型提升 
		float f=1.1F; 
		double d=f;
		System.out.println(d+" "+f);//1.100000023841858 1.1
		//byte,char,short底层的类型就是int类型
		byte b1=1,b2=2;
		short s=2; 
		char c=3; 
		byte c =b1+b2;//不兼容的类型: 从int转换到byte可能会有损失
		//强制把int类型转成byte类型 
		byte b3=(byte)(b1+b2); 
		System.out.println(b3);//3
		//小数强制类型转成整数时可能会出现舍弃
		float f=4.99993476F;
		int i=(int)f;
		System.out.println(i); //4
		//当等号右边所有参与运算的数据都是常量 
		//那么在编译时期会进行优化直接计算结果再把结果赋值给变量
                byte bbb=128-1;//127
                //byte范围(-128~127)
  		int b=128; 
 	 byte bb=(byte)b;
  System.out.println(bb); //-128
  
                 }
}
 /*
00000000 00000000 00000000 10000000  int 128 补码 
转成byte类型
 10000000  byte  补码  负数 
 11111111  byte  反码  负数 (1000 0000减1)
 10000000  byte  原码  负数--- -0 
 -0 规定表示对应类型的最小值 是[-128(特殊认为可以把最高位既当做符号位也当做数值位)]
*/

运算符

算术运算符

		+、-、*、/、%、++、--
++、--
单独运算 
参与运算
 如果++出现在操作数的后面,先赋值再自加1 
 如果++出现在操作数的前面,先自加1再赋值
 如果--出现在操作数的后面,先赋值再自减1
 如果--出现在操作数的前面,先自减1再赋值
class SuanShuDemo{
 	public static void main(String[] args) {
 	//操作  +
 	//功能---求和、字符串连接符
 	int a=1;
  	int b=2;
  	System.out.println(a+b);//3
  	System.out.println(a+b+'a');//100
  	//数值类型变量遇到字符型数据,先把字符型转成对应的编码值,再进行运算
  	System.out.println(1.0+2.34+'a');//100
  	System.out.println(a+'b'+b);//101
	//字符串常量遇到任意类型数据都是拼接
 	System.out.println(a+"a"+b);//1a2
 	System.out.println(a+b+"a");//1a2
	
	//操作 - 
  	//小数不精确
 	System.out.println(2.1-1.9);//0.20000000000000018
	
	//操作 /
  	int c=6;
 	int d=4;
 	int e=6.0;
 	int f=4.0;
 	//如果参与运算的都是整数,结果一定是整数
  	//如果参与运算的有小数,结果就是小数
  	System.out.println(c/d);//1
 	System.out.println(e/d);//1.5
  	System.out.println(c/f);//1.5
  	System.out.println(e/f);//1.5
  	//整数不能除0
  	System.out.println(1/0);//ArithmeticExceptiom---算术异常
  	//小数可以除0
  	//infinity(正无穷大)
  	//-infinity(负无穷大)
  	System.out.println(1.0/0);//infinity
	System.out.println(0.0/0);//NaN ---Not A Number(和本身都不相等)
		
	//操作%
  	//%左边的正负决定了结果的正负
 	System.out.println(1%2);//1
	System.out.println(-1%2);//-1
  	System.out.println(1%-2);//1
  	System.out.println(-1%-2);//-1
	
	//操作++ --
	int a=3;
  	int b=(a++)+(++a)+(a--)+(--a);
  	//b=3+5+5+3
  	//a=4 5 4 3
  	System.out.println(b);//16
  	System.out.println(a);//3
	
	//++ -- 针对byte、short以及char含有强制类型转换    
 	byte c=127;
 	c++
 	System.out.println(c);// int 128 (byte)--- -128
  	short b=32767;
  	b++;
  	System.out.println(b);//-32768
 
 

赋值运算符

		赋值运算符= (把右边的值赋值给左边)
		扩展赋值运算符(强制类型转换)
		+=、-=、*=、/=、%=、&=(按位与等)、 |=(按位或等)
		^=(按位异或等)、>>=(右移等)、<<=(左移等)、>>>=(无符号右移等)
class FuZhiDemo{
 	public static void main(String[] args) {
 	byte a=1;
  	a+=4;//a=a+4;//+= int 5(byte)---5
  	System.out.println(a);// 5 
  	// java不允许出现连等定义
  	//int a=b=c=4;
  	//java允许连等赋值
  	int a=3;
  	int b=a+=a-=a+=7;
  	//b=a+=a-=a=a+7-10
  	//b=a+=a-=10
  	//b=a+=a=a-10- -7
  	//b=a+=-7
  	//b=a=a-7- -4
 	System.out.println(a);//-4
  	System.out.println(b);//-4
  	}
  }

比较(关系)运算符

比较(关系)运算符 (结果一定是布尔值)

 		==、>、<、>=、<=、!=
		a>b>c   a>b&b>c
class BiJiaoDemo{
	public static void main(String[] args) {
  	System.out.println(1==2);//false
  	System.out.println(1>=2);//false
  	System.out.println(1<=2);//true
  	System.out.println(1!=2);//true
 } 
}

逻辑运算符

逻辑运算符 (连接左右俩边布尔值)a>b>c a>b&b>c

	&、|、^(异或)、!(非)、&&(双与)、 ||(双或)、 ||(双或)
	总结:
	&:遇见false就是false
	 |:遇见true就是true
	 ^: 相同则false,不同则true (吸铁石)
	 !: 取反(false变true,true变false 奇数个非结果取反,偶数个非结果不变)
	 &&:(双与)和&的运算规律一致如果&&左边是false右边不执行---短路效果
	 ||:(双或)和|的运算规律一致如果||左边是true右边不执行---短路效果
	 如果||出现在&&左边且||左边布尔值为true    
	 ||会把后面所有内容一并短路掉
class LuoJiDemo{
 public static void main(String[] args) {
  int a=1;
  int b=2;
  int c=3;
  //操作& 
  System.out.println("操作&");
  System.out.println((a>b)&(b>c));//false&false false
  System.out.println((a>b)&(b<c));//false&true  false
  System.out.println((a<b)&(b>c));//true&false  false
  System.out.println((a<b)&(b<c));//true&true   true
  System.out.println("----------------------");
  //操作|
  System.out.println("操作|");
  System.out.println((a>b)|(b>c));//false|false false
  System.out.println((a>b)|(b<c));//false|true  true
  System.out.println((a<b)|(b>c));//true|false  true
  System.out.println((a<b)|(b<c));//true|true   true
  System.out.println("----------------------");
  //操作^
  System.out.println("操作^");
  System.out.println((a>b)^(b>c));//false^false  false
  System.out.println((a>b)^(b<c));//false^true   true
  System.out.println((a<b)^(b>c));//true^false   true
  System.out.println((a<b)^(b<c));//true^true    false
  System.out.println("----------------------");
  //操作!
  System.out.println("操作!");
  System.out.println(!(!(!(a>b))));//false  true
  System.out.println("----------------------");
  //操作&&
  System.out.println("操作&&");
  System.out.println((a>b)&&(b>c));//false&&false false
  System.out.println((a>b)&&(b<c));//false&&true  false
  System.out.println((a<b)&&(b>c));//true&&false  false
  System.out.println((a<b)&&(b<c));//true&&true   true
  System.out.println("--------------------");
   //a=1 b=2 c=3
  //如果||出现在&&左边且||左边布尔值为true, ||会把后面所有内容一并短路掉
  
  System.out.println(true||(a++>b)&&(b<c++));//true
  System.out.println(a);//1
  System.out.println(c);//3
  

位运算符

针对二进制数据的补码形式做运算

	&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、
	>>(右移)、<<(左移)、>>>(无符号右移)
class WeiDemo{
  public static void main(String[] args) {
   int a=2;
   //操作&
   System.out.println(a&3);//2
   //操作|
   System.out.println(a|3);//3
   //操作^
   System.out.println(a^3);//1
   //操作~
   System.out.println(~a);//-3
   /*
   操作&(遇0则0) 任意整数&1=1 就是奇数,结果是0,就是偶数
   任意整数&正数---- 结果一定是正数
   00000000 00000000 00000000 00000010 int 2 补码
   00000000 00000000 00000000 00000011 int 3 补码
   -----------------------------------
   00000000 00000000 00000000 00000010 2 补码
   )*/
   /*
   操作|(遇1则1) 任意整数|0---- 结果还是本身
   任意整数|负数---- 结果一定是负数
   00000000 00000000 00000000 00000010 int 2 补码
   00000000 00000000 00000000 00000011 int 3 补码
   -----------------------------------
   00000000 00000000 00000000 00000011 3 补码
   )*/
   /*
   操作^(相同则0,不同则1) 任意整数|0---- 结果还是本身
   任意整数|负数---- 结果一定是负数
   00000000 00000000 00000000 00000010 int 2 补码
   00000000 00000000 00000000 00000011 int 3 补码
   -----------------------------------
   00000000 00000000 00000000 00000001 1 补码
   )*/
   /*
   操作~(每一位按位取反)
   00000000 00000000 00000000 00000010 int 2 补码
   -----------------------------------
   11111111 11111111 11111111 11111101 负数  补码
   11111111 11111111 11111111 11111100 负数  反码
   10000000 00000000 00000000 00000011 负数  原码-3*/
   /**   
 一个整数和另外一个整数按位异或俩次,结果还是本身
  */
  class WeiDemo2{
  public static void main(String[] args) {
   int a=5;
   int b=6;
   System.out.println(a^b^a);//6 a^a 0^b  
   System.out.println(b^a^b);//5 b^b 0^a
  }
}
>>(右移):如果是正数,右移几位就要在最左边(高位)补上几个0;如果是负数,右移几位就要在最左边(高位)补上几个1.
<<(左移):无论正负数,左移几位就要在最右边(低位)补上几个0
>>>(无符号右移):无论正负数,右移几位就要在最左边(高位)补上几个0
class WeiDemo1{
  public static void main(String[] args) {
   int a=8;
   int b=8;
   int c=-8;
   //操作>>
   //8/2`2=2
   //数据/2`移动位数
   System.out.println(a>>2);//2
   System.out.println(-9>>2);//-3
   //操作<<
   //8*2`2=2
   //数据*2`移动位数
   System.out.println(a<<2);//32
   操作>>>结果一定是正数
   System.out.println(b>>>2);//2
   System.out.println(c>>>2);//1073741882
   /*
  00000000 00000000 00000000 00001000 int   8 补码
  操作>>
  [00]00000000 00000000 00000000 000010(00) 
  00000000 00000000 00000000 00000010  2 补码
     */
     /* 
  10000000 00000000 00000000 00001001  int -9 补码
  11111111 11111111 11111111 11110110  反码
  11111111 11111111 11111111 11110111  补码
  11111111 11111111 11111111 11111101  补码  >>2
  11111111 11111111 11111111 11111100  反码 
  10000000 00000000 00000000 00000011  补码   -3
  */
  /*
  操作<<
  (00)000000 00000000 00000000 00001000[00] int 8 补码
  00000000 00000000 00000000 00100000       32 补码
  */
  /*
  操作>>>
  [00]00000000 00000000 00000000 000010(00) int 8
     00000000 00000000 00000000 00000010  2 补码
     负数>>>
     10000000 00000000 00000000 00001000  int -8
     11111111 11111111 11111111 11110111  反码
     11111111 11111111 11111111 11111000  补码 
     00111111 11111111 11111111 11111110  补码 >>>2
     00111111 11111111 11111111 11111110  反码
     00111111 11111111 11111111 11111110  原码 1073741822
     无符号右移后为正数

     */
       }
}

三目(元)运算符

三目(元)运算符 (结果一定会返回一个值)

	 ~a(一目)
	 a+b(二目)
	格式:布尔表达式?表达式值1:表达式值2;

执行过程
先去计算出布尔表达式的值,如果是true表明执行表达式1返回值1,
如果是false执行表达式2返回值2。

class SanMuDemo{
  public static void main(String[] args) {
  //获取俩个整数的最大值
   int a=4;
   int b=5;
   //俩个表达式值可以不一样。但是要保证两个类型的最大范围在接受值类型范围之内
   int max=a>b?"a":b;
   System.out.println(a>b?"a":b);//如果没有接受值俩个表达式的类型不受限制
   //获取三个整数的最大值
   int a=3,b=4,c=5;
   /*
   int d=a>b?a:b;
   int max=c>d?c:d;
   System.out.println(max);
   //三目嵌套
   System.out.println(a>b?(a>c?a:c):(b>c?b:c));
   System.out.println();
*/
     }
}

运算符优先级(从高到低)

()、!、算术运算符、关系运算符、逻辑运算符、赋值运算符

() ~ ++ -- ! * / % + - << >> >>> 关系逻辑 &| ^ 三元赋值
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值