Java复习3

DOS
盘符转换
D: enter 切换到D盘
进入目录
cd aa\bb enter 进入aa目录下版本、目录
回退目录
cd . . . enter 返回上一级目录
cd \ enter 返回根目录
删除目录
del a.txt enter
del *.txt enter 删除所有以.txt结尾的文件
清屏
**cls
退出DOS窗口
*exit
其他
dir 查看目录文件
md aaa enter 创建目录
rm aaa enter 删除目录
键盘布局
Tab Shift Ctrl Win Alt Enter
常用文本快捷键
Ctrl + c 复制
Ctrl + v 粘贴
Ctrl + a 全选
Ctrl + x 剪切
Ctrl + z 撤销
Ctrl + d 保存
java
. . . . . .
标识符
对各种变量 方法 类等元素命名时使用的字符序列被称为标识符
规则
大小写的英文字母 数字 —— $
不能以数字开头
不能与关键字重名
区分大小写
规范
见名知意
驼峰
注释
// 单行注释
/

多行注释
/
/

*文档注释
*/
解释程序的意义和其他信息
调试程序
-----好习惯
明确要求 寻求思路 细化步骤 编写代码
常量
在程序运行过程中,其值不能改变的量
分类
整数 字符 小数 字符串 布尔 null
进制转换
八进制 十进制 十六进制
其他进制转换十进制
系数 * 基数的权次幂
十进制转换其它进制
除基取余,直到商为0,最后,余数反转就是结果
进制间转换
+
+
原码
二进制数的有符号表示法,最高位为符号位
原码不直接参加运算,会出错
计算机中,数值一律用补码表示(存储)
使用补码,可以将符号位和其他位统一处理,同时,减法也可以按加法来处理
使用补码,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃
反码
正数 与原码相同
负数 符号位不变,数值位按位取反
补码
正数 与原码相同
负数 反码加一
变量
运行过程中,值可以改变的量
内存中一小块存储区域 用于存储数据
格式
数据类型 变量名 = 初始化值;
数据类型 变量名;
该空间可以重复利用
数据类型
引用数据类型
基本数据类型
4类8种
整数
字节 byte 1个字节 -128 ~ 127 2的7次方-1
短整型 short 2个字节 -32768 ~ 32767 2的15次方-1
整型 int 4个字节 . . . -2的31次方到2的31次方-1
长整型 long 8个字节 标示L | l . . . -2的63次方到2的63次方-1
浮点
单精度 float 4个字节 标示F | f . . .
双精度 double 8个字节 . . .
字符
char 2个字节
布尔
boolean 1个字节
–整型默认int 浮点型默认double
数据类型转换
参与运算的数据类型要一致
布尔型不能参与运算
容量小的默认转换为容量大的数据类型
byte,short,char -> int -> long -> float -> double
byte , short , char之间不会互相转换,三者运算时会首先转换成int类型
大 -> 小 ,加强制转换符 精度会损失 或 溢出
多种类型参与运算,系统首先自动转换容量最大的一种,再计算
运算符
算术运算符 + - * / % ++ –
% 取余
余数的正负,取决于左边的正负
++ – 递增 递减
单独使用 a++等同++a
参与操作(运算,赋值,打印),++a 数据本身改变,再参与操作
int a = 12 ; b = ++a ; //a = 13 , b = 13
参与操作(运算,赋值,打印),a++ 数据先进行临时存储,数据本身改变,再
将存储的数据赋值
int a = 12 ; b = a++; //a = 13 , b = 12
+
正号 加法运算符 字符串连接符
赋值运算符 = += -= = %=
int x = 3 ;
x += 3 ; // x = x + 3
关系运算符 == != >= > < <= 返回值true false
逻辑运算符 & | …… ! && ||
& 与 有false 则false
| 或 有true 则true
^ 异或 相同则false 不同则true
&& 短路与 左边为false,终止操作
|| 短路或 左边为true 终止操作
三元运算符 ? :
(条件表达式) ? 表达式1 : 表达式2
条件表达式为true 运算后的结果是表达式1
条件表达式为false 运算后的结果是表达式2
位运算符
位运算,首先要求我们把数据转换成二进制
<< 将左边的操作数在内存中的二进制数据左移右边操作数指定的位数
右边被移空的部分补0 乘以2的移位次幂
2 << 4 -----2
2^4
>> 如果最高位是0,左边被移空的部分就填入0
如果最高位是1 , 左边被移空的部分就填入1
相当于除以2的移位次幂
>>> 无论最高位是1还是0 ,左边被移空的部分都填入0
. . .
语句 顺序 选择 判断 循环
顺序结构
程序从上往下,从左往右依次执行
判断结构
if(条件表达式) {
执行语句;
}
if(条件表达式){
执行语句1;
}else{
执行语句2;
}
if(condition expression){
execute statement1;
}else if{
execute statement2;
}else{
execute statement3;
}
. . . . . .
选择语句
switch(表达式){
case 取值1:
执行语句;
break:
case . . .
default :
执行语句 ;
break ;
}
表达式支持byte short int char enum String类型
break可以省略 结果可能不一样
建议default语句放在最后写
当多个答案针对同一个处理时,break可以省略,不影响
if&switch
如果对具体的个数的数值进行判断,建议switch,switch会将答案加载进内存,选择
效率高
如果对区间进行判断,建议if
如果运算结果是Boolean类型,建议if
循环结构
while(condition expression) {
execute statement;
}
while所控制的语句是一条时,可以省略{ }
do{
execute statement;
}while(condition expression)
do while 循环至少执行一次,while 循环可能一次都不执行
for(初始化表达式;循环条件表达式;循环后操作表达式){
执行语句;(循环体)
}
while & for
当定义的初始化变量只为递增而存在,用for ,效率高
当定义的初始化变量在操作完后,还要继续使用,用while
无限循环
for( ; ; ) { } —条件表达式默认为true
while( true ) { }
循环嵌套
外循环执行一次,内循环执行多次
打印形状时,外循环控制行数 内循环执行列数
累加思想和计数器思想
continue & break
应用范围
continue用于循环
break用于选择和循环
单独使用无意义
break用于结束循环,continue用于跳出本次循环,进入下一个循环
方法
完成一个特定功能的一段程序
格式
修饰符 返回值类型 函数名( 参数类型 形参 , . . .){
执行语句;
return 返回值;
}
特点
封装代码 ,提高复用性
自定义方法只有被调用时才会被执行;
方法中可以调用其他方法,不可以自定义方法;
自定义方法
两个明确
明确方法的返回值类型
明确方法的参数列表
方法的重载
同一个类中,允许存在一个以上的同名方法,只要参数的个数或参数类型不一样即可
数组
存储同一种数据类型的数据的集合,是一个容器
格式
数据类型[ ] 变量名 = { … , … , … , … } ;
数据类型[ ] 变量名 = new 数据类型[长度]
操作数据时可能遇到的问题
数组角标越界异常
ArrayIndexOutOfBounsException
访问了数组的最后一个元素后,程序还在继续访问
空指针异常
NullPointerException
一个引用变量已经不再指向对内存的地址,程序还在继续访问
数组常见操作
1.操作数组,离不开角标
2.遍历数组
3.获取最值
4.互换位置
–逆序
5.查表&基本查找
6.选择排序
先从0角标位置元素与其他位置元素(自己除外)进行依次比较,每次比较完后,最小
值出现在最左边,并将起始位置后移一个角标位,直至次尾角标位
+
+
7.冒泡排序
相邻的元素,两两比较,大的后移,每次比较完,最大值出现在最后面
+
+
8.二分查找
. . .
+
+

	基本数据类型和引用类型传递
		Java中只有值传递
			引用传递,传递的是地址值
		基本数据类型	传递过去后,形参改变对实参没有影响
		引用类型数据传递过去后,形参改变直接影响实参
	查找
		数组无序
		数组有序
			二分查找
			+
			+
	十进制到十六进制的转换(查表法)
	+
	+
	使用查表法的时机
		当在分析问题中存在映射关系,使用查表法
		对于映射关系,如果对应的一方是有序的编号,比如数组的角标,这时可以使用数组作为这个关系的
		容器将多个对应关系进行存储
	 
		
面向对象
	类	
		现实事务的抽象
	对象
		该类事物具体的存在个体
	描述类
		用属性和行为来描述一个类
	创建对象
	使用对象
	成员变量存储在堆内存,属于对象,随着对象存在而存在,随着对象消失而消失
	局部变量存储在栈内存,属于它所属范围的,使用完立即被释放
	匿名对象
		只执行一次方法的调用
		可以作为实际参数传递--method( new Object())
	封装
		将变化进行了隔离,提高了程序的安全性
		提供了公共的访问方式,提高了复用性
		private 权限修饰符
	构造方法
		创建对象,并进行初始化
		构造方法用于创建对象,并初始化对象
		成员方法用于完成一个功能
	Person p = new Person();在内存中的执行过程
		把Person.class文件加载进内存
		在栈内存中开辟空间,存储p变量
		在堆内存中开辟空间,创建对象
		对对象中的成员变量进行默认初始化
		执行构造代码块,如果没有构造代码块,就不执行
		对对象中的成员变量进行赋值
		把对象构造初始化完毕
		将对象在堆内存中的首地址赋给栈内存变量p
static
	用于修饰成员
	随着类的加载而加载
	优先于对象存在
	被所有对象所共享
	可以直接被类名调用
	*静态成员只能访问静态成员
	*静态方法中不能有this   super关键字
静态变量&非静态变量
	静态变量随着类的加载而加载,随着类的消失而消失,生命周期最长
	*非静态变量随着对象的创建而存在,随着对象的消失而消失
	静态变量和类相关,属于类的,可以被类名调用,也可以被对象名调用
	*非静态变量和对象相关,属于对象的,只能被对象名调用,称为实例变量
	静态变量存储于方法区中的静态区
	*非静态变量存储于对象的区域,在堆内存中
	静态变量的数据被所有的对象共享
	*非静态变量是每个对象特有的数据
单例设计模式
	保证对象在内存中只有一个
		//私有构造方法
		private Student(){}
		//提供公共的实例化对象的方法
		Student s = new Student();
		public `static Student getInstance(){
			return s;
		}
	饿汉式,线程安全  
		//提供公共的实例化方法
		private static Student s= new Student();
		public static Student getInstance(){
			return s;
		}
	懒汉式(延迟加载)
		//提供公共的实例化方法
		private static Student s = null;
		public static Student getInstance(){
			if(s == null){
				synchronized(Student.class){
					if(s == null){
						s = new Student();
					}
				}
			}
		} 
继承	 
	相同内容抽取到一个单独的类中,继承此类,无需 再定义这些属性和行为
	被继承的类称为父类或者超类
	子类可以直接访问父类中的非私有的属性和行为
	特点
		Java只支持单继承,支持多层继承,接口和接口之间可以存在多继承
		子类有父类所有功能可以改变父类的属性,重写父类的成员方法
		父类的属性和方法可以被继承,  构造方法不可以被继承   , 子类的构造方法隐性的调用父类的无参
		构造方法   ,
		当父类没有无参构造方法时,子类需要使用super来显示的调用父类的构造方法
		成员变量
			先在局部范围内找,其次在本类中找,最后在父类中找
		成员方法
			首先在子类中找,其次在父类中找,
			重写
				子类中存在与父类同名的方法,称为重写,复写,覆盖
			重写&重载
				重写---方法声明一致(名称和参数)
						  存在于子父类中
						  子类的访问权限不能低于父类的访问权限
				重载	
						  在同一个类中
						  方法名相同,参数列表不同
	-----父类静态方法只能被子类静态方法重写(一般不会出现这种情况,静态属于类不再属于对象)
		  父类中的私有方法不可以被覆盖
		  在子类覆盖方法中,要想继续使用被覆盖的父类方法可以通过super . 方法名获取
		  	格式 super . methodName();
		  this 代表本类对象的引用
		  super 代表父类所属的空间,并不是一个对象
	构造方法
		子类中所有构造函数默认都会访问父类中空参的构造方法
		当父类中没有空参构造方法时,子类构造方法必须通过this 或者 super 语句指定要访问的构造函数
		子类实例化时,因为继承了父类,可以访问父类的属性和方法,所以必须为父类的属性进行分配空间
		,并进行初始化,所以必须要访问一次父类的构造方法,看看父类是如何进行初始化的
		---父类的构造方法,既可以给本类对象初始化,也可以给子类对象初始化
final
	使用场景
		修饰类  修饰成员变量  修饰成员方法
		final修饰的类不能被继承
		final修饰的成员方法不能被重写
		final修饰的成员变量是一个常量
	final double  PI = 3.14;
		变量名大写
		值不能改变
	----final修饰的变量必须先赋初始值
抽象类
	抽象就是从多个事物将共性的,本质的内容抽取出来
	Java中可以定义没有方法体的方法,该方法的具体实现由子类完成,该方法称为抽象方法,包含抽象方
	法的类就是抽象类
	多个对象都具备相同的功能,但是功能具体内容不相同,那么在抽取过程中,只抽取功能定义,未抽取
	功能主体,那么只有功能声明,没有功能主体的方法被称为抽象方法
	特点
		抽象类和抽象方法都必须用abstract关键字修饰
		抽象方法一定在抽象类中
		一个类继承了抽象类
			该类实现抽象类中所有的抽象方法
			或者该类实现部分抽象方法,或者根本不实现任何抽象方法,这个时候需要把自身定义为抽象类
		抽象类不可以实例化,不能new 关键字来创建对象
			因为抽象类中有抽象方法,创建对象后,其他类调用抽象方法是没有任何意义的
		抽象类的构造是有意义的
			抽象类本身是一个类,所以有构造方法,不能实例化不代表构造方法没有意义,可以为子类对象进
			行实例化
		冲突
			final abstract . . .final修饰的方法不能被重写,这样就和抽象产生了冲突
			private abstract . . . private修饰的内容只能在本类中被访问
			static abstract . . . static修饰的内容可以直接被类访问,直接访问抽象的内容没有意义
接口
	接口是特殊的抽象类
	所有的属性都是 public static 公开静态常量(全局常量)
	所有的方法都是public 公开抽象方法 ,而且没有构造方法
	思想 特点
		接口是对外暴露的规则
		接口是程序的功能扩展
		接口的出现降低耦合性
		接口可以多实现,可以继承一个类的同时实现多个接口
		接口和接口之间可以有继承关系
	使用
		实现接口中所有的方法
		或者定义为抽象类
		接口不能被实例化,所有成员有固定修饰符
		---接口可以省略public 和 abstract 。实现类不可以省略public
			如果接口中方法的返回值不是void,实现类中必须有return语句
			如果接口中方法返回值是void ,实现类大括号中可以没有语句
			如果父类实现了某个接口,子类自然实现了该接口
	接口 & 抽象
		抽象类只能是单继承,接口可以多实现
		抽象类中可以有非抽象方法,可以定义常量和变量
		接口中方法是抽象的,只能有静态常量,因为接口中方法默认public abstract 接口中成员变量默认
		public static final
		抽象类中定义的是体系中的共性功能,接口中通常定义对象的扩展功能
		接口的出现避免了单继承的局限性
		抽象类被继承表示 is a 的关系,接口类被实现表示 like a 的关系
多态
	事物的多种形态  分为静态多态(重载)和动态多态(对象的多态)
	特点
		体现
			多态用在方法的参数上
			多态用在方法的返回值上
			父类引用或者接口引用执行子类对象
		成员特点
			成员变量
				编译看左边,运行看左边
			成员方法
				编译看左边,运行看右边
				方法覆盖的特性
			静态方法
				编译看左边,运行看左边
		提高代码扩展性,提高通用行
		向上转型& 向下转型
			. . . . . .
instanceof
	是一个比较运算符,返回值为boolean
		对引用做强制类型转换,用instanceof判断是否兼容
		避免类型转换异常
			if( a instanceof  Dog ){
				Dog d  = ( Dog ) a ;
				a.shout();
			}
Object
	所有类的超类
	常用方法
		equals(Object obj)  对对象进行比较,默认比较地址值,一般都会重写此方法,完成想要比较多内容
			public boolean equals(Object obj){
				//为了提高效率
				if(this == obj){
					return true;
				}
				//为了程序的健壮性
				if( ! ( obj instanceof Student ) ) {
					return false;//实际开发会抛出一个异常而不返回false
				}
			}
		toString()  按照字符串格式输出,对象类型@哈希值,无意义,重写,建立自己的字符串格式输出
		getClass()  反射中  获取对象字节码
		hashcode() 返回对象哈希码值  十进制的
	equals & ==
		. . . .
Math
	半径为属性,求圆面积
	. . . . 
内部类
	在类的内部定义的类,只不过类的位置发生了变化而已
	内部类可以直接访问外部类的成员,包括private修饰的
		内部类都持有一个外部类的引用 --- -外部类名.this
	外部类要访问内部类,必须创建对象
	在类中的位置
		+
		+
	匿名内部类
		没有名字的局部的内部类
		内部类可以继承一个外部类或实现个外部接口
		格式  new 外部类名 / 接口名( ) { 覆盖类或者接口的代码  也可以自定义内容 }
		通常在使用方法是接口类型参数,并且该接口中的方法不超过三小时,可以将匿名内部类作为参数传
异常
		程序出现的问题被称为异常
	处理异常
		主函数主动处理
		jvm的默认机制,将异常信息打印输出到控制台
	异常体系结构
		Throwable异常的超类
			Error
				类不存在   内存溢出 。 。。
			Exception
				运行时出现,  修改代码解决
	处理方式
		try { } catch ( ) { } 
		try { } catch ( ) { } catch ( ) { } finally { }
		fianlly 永远会被执行
	final & finally & finalize
		final 用于声明属性,方法,和类 ,分别表示属性不可变 方法不可覆盖  类不可继承 
				内部类要访问局部变量 ,局部变量必须定义为final类型
		finally  异常处理结构的一部分 表示总是执行
		finalize  Object的一个方法  垃圾收集器执行的时候会调用这个方法回收对象
					可以覆盖此方法提供其他资源的回收  关闭文件等 
					jvm不保证此方法总被调用
	throw & throws
		使用位置
			throws在方法声明上使用
			throw在方法体内使用
		使用格式
			throws后面是异常类名
			throw后面是对象
		联系
			有throws不一定有throw
			有throw一定有throws
	Exception  &  RuntimeException
		Exception  编译时就会检查,需要编写征对性的处理代码进行处理
		RuntimeException  运行时直接处理 必须i修改代码  一般交给jvm处理  我们不处理
	自定义异常
		继承Exception  /  RuntimeException
		在自定义异常里面 提供一个有参构造  比如 ( String message)
	细节
		多个catch中有父类异常,一定要定义在最下面,否则编译失败
包
		文件夹
		对类进行管理
		使类有多命名空间
		不同包中类之间的访问
	import	
		. . .
修饰符
	private  同一个类中
	default  同一个类中  同一个包下
	protected  同一个类中  同一个包下  子类中
	public               .               。                 。         不同包下
	-----------------------
	public 		 	class  构造方法  成员方法  成员变量
	default  		class  构造方法  成员方法  成员变量
	protected        		  构造方法  成员方法  成员变量
	private           	 	  构造方法  成员方法  成员变量
	static                                      成员方法  成员变量
	final    	 		class                  成员方法  成员变量
	abctract  		class                  成员方法		
jar
	Java中的压缩包
----char变量可以存储Unicode编码字符集中包含的汉字,如果没有包含,则不能被存储
----静态  & 实例  变量
	作用范围
		静态变量随着类的加载而加载,随着类的消失而消失  生命周期最长
		实例变量随着对象的创建而加载,对象消失,实例变量消失
	存储空间
		静态变量存储在方法区中的静态区,被所有实例共享
		实例变量存储在堆内存中,只被某一个对象持有
	调用方法
		静态变量既可以通过类名直接调用,也可以通过对象名调用
		实例变量只能通过对象名调用
----abstract  &  interface
	抽象类  单继承   接口  多实现
	抽象类  非抽象方法  变量  常量 ||  接口  抽象方法  静态常量  方法默认public abstract  变量默认
	public static abstract
	抽象类  共性功能抽取  接口  扩展功能增强
	抽象类  is a  接口  like  a
----面向对象特性
	抽象
		暂时不用部分细节  过程抽象  数据属性抽象
	继承
		层次模型  允许和鼓励类的重用 提供一种明确表述共性的方法
	封装
		面向对象基本概念,
	多态
		参数化多态(重载)  对象多态性(重写)
多线程
	
	
			
				  


 泛型通配符
 	?
 	?extends E  向下限定
 	? super E  向上限定
 增强for 之前要if (object != null) 注意并发...
 可变参数  注意方法中要有for循环   底层是数组  是传参中最后一个

String作为参数传递  等同于基本类型传递
StringBuffer作为参数传递  注意不要直接赋值  调用append()方法才有效
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值