沈益达Java基础总结

      java是一门强类型语言(变量的使用要严格符合定义,所有变量都必须先定义后使用),java的内存结构是栈内存、堆内存、方法区。栈(用于局部变量,当数据使用完,所占空间会自动释放),堆(存放数组和对象,通过new建立实例,每一个实体都具有内存地址值,实体的变量都有默认初始化值,实体不被使用时会被垃圾回收器回收)共同特点都具备自己释放内存。Java中描述事物通过类的形式提现,类是具体事物的抽象,概念上的定义。在java中只支持单继承,不支持多继承{关于java中多继承困惑解答(类定义属性和方法描述某一类事物的抽象,接口定义的是行为并不限于任何具体意向)接口与接口的关系称为实现比称为继承更为贴切}。java对传输数据操作通过流的方式,用于操作流的对象都在IO包中。

1.函数的特点:定义函数可以将功能代码进行封装,便于对该功能进行复用(提高代码复用性),函数之间只能调用函数,不可以在函数内部定义函数。

2.数组:数组就是一个容器。

3.面向对象(万物皆对象思想):基于面向过程创立而成,将功能封装进对象,强调具备了功能的对象。它符合人们的思考习惯,将复杂的事情简单化。面向对象叫做方法,而面向过程叫做函数

3.1—封装(encapsulation):指隐藏对象的属性和实现细节,仅对外提供公共的访问方式,更好的将变化隔离,便于使用,提高重用性和安全性。

3.2—继承(inheritance):指子类获得父类非私有属性和行为,继承提高了代码复用性,让类与类之间产生关系,提供了多态的前提和条件。继承中存在覆盖时,子类方法权限一定要大于等于父类方法权限。Final可以修饰类、方法、变量,修饰的类不可以被继承,修饰的方法不可以被覆盖,修饰的变量是一个常量,只能被赋值一次,内部类只能访问被final修饰的局部变量。关于抽象类是具体事物抽取出来的,本身是不具体的,没有对应的实例。抽象类与普通类的区别就是抽象类是用abstract修饰的,抽象类可以有抽象方法也可以有普通方法,抽象类有构造器,但是抽象类本身却不能够被实例化,抽象类的构造方法就是给子类实例化时初始化使用的,因为初始化一个子类对象时会先调用super关键字对父类进行初始化。定义抽象类就是为了给子类继承,所以抽象类不能为final修饰的最终类,抽象方法不能为static,而抽象方法的权限至少为protected(或者是public)子类可以访问的。抽象类与接口区别:接口比抽象类更加抽象,接口中不能有抽象方法,抽象类只有单继承而接口可以多继承,接口中只能有public的抽象方法和public的变量。

3.3多态(polymorphism):指某一类事物的多种存在形态,它的存在提高了程序扩展性和后期可维护性,前提是需要存在继承或者实现关系,而且要有覆盖操作。

4.异常:throws(标识)用在函数上,后跟着异常类名、throw(抛)用在函数内,后面跟着异常对象。如果在处理异常时,之前执行了System.exit(0)操作,那么Finally代码块则不会被执行。一个方法被覆盖时,方法必须抛出相同的异常或者异常之类。

5.多线程:通过继承Thread类方法创建线程,通过实现Runnable接口创建线程。Wait();和sleep();两者的区别:wait释放这个线程锁占用的系统资源到线程池中休息,而线程池的设计亨元模式,是自带队列的,如果去找它会找到后进去休息的线程,如果不去找它,它就会一直线程池中休息,从而占用喜用资源,而sleep是原地休息,不进线程池,所以不释放占用的系统资源。多线程安全问题,多个线程操作同一片资源的时候,极可能造成资源数据错乱,所以就需要使用到线程同步锁,同步锁就是把共享的资源加同步,只有一个线程能够对这片数据进行操作,当这个线程结束对数据的操作,就会释放同步让别的线程来操作数据,就不会造成数据的错乱。

       单例设计模式就是为了保证一个类的对象在内存的唯一性,单例设计模式有4种方式,其中两种比较早的方式是饿汉式与懒汉式。饿汉式线程同步效率高,但是在类被加载进内存时就会初始化对象,因此不能延迟加载(如果这个对象占用内存资源较多),就会比较浪费资源,并且无法防反射破解。懒汉式是可以达到延迟加载,但是线程不同步,如果懒汉式加了同步锁,调用效率就会比较低,并且也无法防反射破解。因此有了两种新的方式取代饿汉式与懒汉式。枚举式取代了饿汉式,枚举式就是天然的单例,并且它是由虚拟机底层创建的,天然防反射破解,调用效率高,可惜不能延迟加载。私有静态内部类式取代了懒汉式,定义一个静态内部类,需要时在内部类创建外部类对象,内部类创建对象数据局部变量,不会再类加载时就被初始化,因此达到延迟加载,并且线程同步,但是遗憾的是它也无法防反射,只能认为的在单例类构造器中做些手脚来防止反射破解。

6.集合(Collection):就是对多个对象进行操作和存储。问数组和集合类同是容器,有何不同?数组长度固定且只能存储基本数据类型,而集合长度可变但只能存储对象。它的接口List(列表):可存放重复元素,元素存取是有序的、Set(集):不可存放重复元素,元素存放是无序的。ArrayList():线程不安全,查询速度快、LinkedList:链表结构,增删速度快。集合的迭代就是取出集合中的元素的一种方式,Collection中有Iterator方法所以每一个子类集合对象都具备迭代器,迭代器在集合接口中是通用的,它替代了Vector类中的Enumeration(枚举),next方法是自动向下取元素,要避免出现NoSuchElementException,返回值类型是Object记得要转换类型。Set集合元素唯一性原因:HashSet通过equals方法和hashCode方法来保证,TreeSet通过compareTo或compare方法来保证。泛型的特点提高了程序安全性,将运行期遇到的问题转移到了编译期,省去了类型强转的麻烦,优化了程序的设计。Map集合常用类HashMap:线程不安全,速度快,允许存放null值,null键、TreeMap:对键进行排序,原理与TreeSet相同。

7.IO(Input、Output)流:处理设备之间数据传输是通过IO流来完成,按操作数据分为:字节流和字符流,按流向分为:输入流和输出流。缓冲区提高了对数据的读写效率。BufferedReader是装饰设计,用于增强同一个体系中的Reader的子类。装饰设计模式中的装饰类通常跟被装饰类是在同一个体系中,但是两者间不存在直接关系,都是通过组合、多态的方式,让增强类持有被增强类的父类或者接口引用,在需要增强被增强类时,就把被增强类的对象传给增强类,装饰设计模式避免了继承体系膨胀的好处,但是也带来小对象过多的弊端。

8.GUI(图形化界面):事件监听机制就是确定事件源,通过事件源对象addXXXXListener()方法接收XXXListener的子类对象,一般用匿名内部类来表示。网络通信就是Socket间的通信,Socket是网络服务提供的一种机制,数据在两个Socket间通过IO传输。


扩展内容:

   在GOF23设计模式中接口、组合跟多态都是一起使用的,例如行为模式中的状态模式,设置一个状态接口,然后许多种状态类实现那个状态接口,真实对象持有这个状态接口的引用,真实对象再通过多态达到不同状态的切换。

问:int与Integer的区别:

int是基本数据类型,直接用来存数值,而Integer是一个类,int的初始化参数为0,而Integer是null。

问:泛型有什么作用:

在数据类型不明确的时候可以使用泛型。java是解释型语言,一个程序运行分两个步骤,一个是编译时,一个是运行时,而泛型就是在编译时进行参数类型的安全检查,所有的强制类型转换都是自动的和隐式的,提高代码的重用率。泛型不能使用在静态属性跟静态的方法上,泛型也不存在多态。

问:说说暴力反射与反射的区别:

java的一个程序运行分为运行时和编译时,反射就是在运行时加载某个对象在内存中唯一的字节码文件,并且获取该字节码文件中的各种属性,把字节码文件中的各种属性拆分成各种java类, 而暴力反射就是把语言访问检查setAccessible开关设为true,这样虚拟机在反射时就会取消安全访问检查,提高了反射速度,并且可以对私有属性进行访问。

问:正则表达式的利弊:

正则表达式用一些符号对字符串进行操作,简化了书写,但是很多符号乱糟糟的聚集在一起很大程度降低了阅读性。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容