CoreJava总结

CoreJava总结:

1、 java语言概述

java语言特性——它是一种简单、面向对象、分布式、解释型、稳定、安全、结构中立、易移植、高性能、多线程的动态语言

jdk、jre、jvm

GC

编码(.java)——编译(.class)——运行

代码安全

常见包:lang、io、net、util、sql

2、 基础语法

注释:单行、多行、文档

标识符:类、方法、变量名,字母、_、$开头,长度无限制,大小写敏感case sensitive

       规范:包、类(接口)、方法(变量)、常量(static final)

关键字50个:volatile,tran关键字50个:volatile,transient,,sizeof,const(final)、goto(break[label]、continue[label])

True falsenull  不是关键字

sient,,sizeof,const(final)、goto(break[label]、continue[label])

True falsenull  不是关键字

数据类型:8种基本类型、引用类型(对象气球)

运算符:A&getXXX()、A&&getXXX(),>>>(>>),instanceof(比较运算符)

表达式:由运算符、常量及变量构成

3、 流程控制

if……else,switch(byte、short、int、char、枚举,long与String不可)……case(default位置不限),while,do……while,for(;;){}

break、continue

4、 数组

相同类型对象的集合,对象(length属性)

数组的声明int[] a,int a[]

数组的创建 a=new int[5];默认初始化与类属性的默认初始化一样

数组的初始化 a=new int[]{1,2,3,4,5};

声明、创建、初始化一起:int[] a=new int[]{1,2,3,4,5}

多维数组 int[][] a=new int[2][];

System.arraycopy(Object src,int srcPos, Object dest, int destPos, int length)

java.util.Arrays查找、排序

冒泡、快速

5、 面向对象概论

类和对象:类——抽象数据类型,对象——类的实例

封装(隐藏该隐藏的、公开该公开的、getter/setter、方便使用、安全考虑)——>继承(代码重用OOP、AOP,构造器不可被继承)——>多态(父类引用指向子类对象、编译时只能调用父类方法、运行时实际调用子类重写的方法)

重写:方法名相同、返回值相同(父子类也可)、参数列表相同、访问权限不能变小、抛出异常不能扩大(父类方法抛异常、子类方法不抛异常)

重载:方法名相同、返回值不做限制、参数列表不同(精确匹配)

static(修饰成员属性、成员方法)、final(修饰类不可被继承-String类、修饰方法不可被重写、修饰变量不可变)、abstract(抽象类可以没有抽象方法、抽象方法必须声明在抽象类中)

抽象类(有构造器、不可实例化、单继承)和接口(无构造器、多实现)——面向接口编程(jdbc API)

构造器:与类名相同、没有返回值、默认构造器(空参空实现)、构造器重载

子类对象创建和初始化顺序:父子类的static成员、父子类属性默认初始化、进入子类构造器、递归调用父类构造器、父类属性的显式初始化、父类构造器剩余代码、返回子类构造器、子类构造器显式初始化、子类构造器剩余代码

单类创建和初始化顺序:类的static成员(一次)、属性默认初始化、构造器、显式初始化(代码块)、构造器剩余代码

this.当前对象成员、this(……)调用当前对象重载的构造器

super.父类对象成员、super(……)调用父类重载的构造器

类型转换:高字节(父类)-低字节(子类)(强转)——instanceof运算符、反之自动类型提升

方法声明(签名):修饰符  返回类型 方法名(参数列表) 抛出异常{方法体}

参数传递:值传递(ctrl+s 编码习惯)

6、 高级语言特性

访问控制:private、default、protected、public(反射可以破坏封装、编译时概念)

Object:clone(深克隆、浅克隆)、finalize(回收资源)、equals(默认实现:==)、toString(类全限定名@hashCode的16进制)、hashCode(默认native非java语言实现)、getClass(反射相关)、wait(3个)、notify、notifuAll(线程相关)

String(方法参考API)常量池

Stringstr=new  String(“abc”)创建了两个对象

StringBuffer(线程安全、synchronized)、StringBuilder——可变长字符串

可变长参数 String[]——String…

静态导入 import static System.out  out.println();

包装类——自动拆箱、装箱 char——Character

int——Integer——String   PPT 162

内部类:静态、成员、局部(final变量)、匿名(无名,无构造器,无class,implments、extends关键字,继承类或实现接口)

newOuter.Inner()——(newOuter()).new Inner()

枚举enum:特殊的类、不可被继承、可以实现接口、没有“局部或匿名枚举”的概念

7、 集合

自动扩容,元素类型任意,数据结构

PPT183

Queue:FIFO

List有序、可重复:ArrayList(数组实现、查询快、增删慢)、LinkedList(双向链表实现、查询慢、增删快)、Vector(线程安全的ArrayList)

Set无序、不可重复:TreeSet(实现可排序SortedSet)、HashSet(通过hashCode计算位置、若位置已被占比较equals、若equals相等丢弃否则按照某种算法寻找下一位置)

Map键值对:TreeMap(实现SortedMap)、HashMap(HashSet就是value为null的HashMap)

Iterator(用作迭代)、Iterable(Collection的父接口,方法iterator)

for-each循环——用迭代器实现

java.lang.Comparable(用于要插入集合的类实现)、java.util.Comparator(用于Tree*的构造器)

8、 泛型

代码安全性ClassCastException

泛型类

类型擦除——编译时概念

ArrayList<String>list=new ArrayList<String>();

ArrayList<Object>list=new ArrayList<Object>();

List<String>list=new ArrayList<String>();

ArrayList<Object>list=new ArrayList<String>(); 泛型参数不允许多态

9、 异常

PPT244

Error、Exception(受查异常,必须处理:捕获或抛出)、RuntimeException(运行时异常,可以不处理)

try(可能出异常的代码块)——catch(捕获异常并处理printStackTrace、getCource、get

Message)——finally(final、finalize)除出现System.exit(0);代码外一定执行

       自定义异常

       throw/throws

       异常栈结构

       常见异常

       断言:Assertion java.lang.AssertionError–enableassertions用于调试,产品发布后关闭断言

10 反射、标注

       Class(基因)获得对象的三种方式:类名.class、对象名.getClass()、Class.forName();——立即/强制加载类型信息

       newStudent();

       类型信息(.class文件)的运行时加载(动态加载)

       反射:获取类型信息、创建对象、破坏封装、调用方法(AOP)

       标注:Annotation特殊的接口@Test()、Method.invoke

       三种类型:标记标注、单值标注、多值标注

       自定义标注@interface

       常见标注:@Override、@Deprecated、@SuppressWarning

       元标注:标注标注的标注@Retention、@Target、@Documented、@Inheried

11 GUI

       编程步骤:容器——布局——组件——事件

       事件模型:Fall In Love 事件源、事件、监听器(设计模式)

       awt、swing

12 IO流、文件

       File(exist、getAbsolutePath)文件或者目录 File.Separator

       IO流 PPT466-468

       分类:

输入流(in、reader)——输出流(out、writer)

              字节流(stream)——字符流(reader、writer)(适配器模式)

              节点流——包装流(装饰器模式)

              newObjectInputStream(newDataInputStream……(newFileInputStream(文件路径)))

       如何挑选合适的流?

       序列化——ObjectInput(Output)Stream借助反射实现 实现可序列化接口

              什么被序列化了:类的全限定名、属性的类型和值(对象的状态)

              反序列化要求jvm中有类的声明

              Class.forName(类的全限定名);

       RandomAccessFile(read、write、seek)

       格式化输出/入:Scanner、printf(“%s_%d”,”123”,12);

13 多线程

       线程、进程

       Thread类和Runnable接口(解决了单继承问题)

       状态切换 PPT435 7种状态 sleep、yield、join、start、notify、wait

       并发控制:synchronized 牺牲时间换取安全性

       死锁——哲学家进餐

       volatile(把变量放置于主存而不是各自的内存空间)解决线程并发控制最小代价

       并发包:Executor  ExecutorService

                     Callable(call方法解决了run方法的两个问题:有返回值(泛型)、可以抛出异常)Future

                     Lock:互斥锁、读写锁

14 网络编程

       TCP/IP协议

       UDP

       java.net+java.io+java.lang

       注意flush

       编程步骤


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值