java基础入门之一

1、java知识框架概要

2、java基础

   1. 虚拟机:

Java是解释性语言(C/C++是编译性语言),因为有了虚拟机的机制,java可以实现,一次编译,多平台运行。类似分层的思想。

2.垃圾回收机制

    这和C#类似,一个经典的理解,就是满3退1的例子中,也就是链表中的指针脱离链表后,java会自动=回收那些垃圾,垃圾的实质是在栈中和堆中失去引用的对象。

3、内存分析

    C c1 = new C();

    C c2 = new C();

    内存大致可以分为三个区域:栈、堆、data数据区、code segment。 8种基本的类型存放在栈中,其他的引用类型,放在堆中,大小可以变化。堆中是通过new关键字new出的对象,该对象封装了类的属性,但不包含类中定义的方法;Data segment数据区存放常量和静态变量;code segment存放方法代码,静态的方法,通过类直接调用,非静态方法,通过对象的引用也就是new出的对象,来调用。

    二维数组中,一维中的内存中存放的是对二维数据的引用,二维对象是对一维的引用。

    通过赋值的临时变量,形参一旦使用完后,在栈中会自动销毁;返回值在栈中占用临时的空间,等方法执行完后,这个空间就没有了。

    多态与内存,一个对象可以封装其他的对象,这样就具有了多重身份,反映到内存中就是,可以有多个对象引用,多态的实质,就是在栈中通过不同的引用,调用堆中的对象的相关方法。

4、面向对象

    java中是单继承,区别于C#,java通过实现多个接口,来避免C++中双重继承的问题。接口在java中有更大的用途。

    super是继承父类的构造函数的关键字,需要放到子类构造函数的首位。

    override(write)重写, 是继承关系,重载是在一个类中,不同的函数签名,具有相似的功能。在重载中, 因为当函数名,参数都相同,只有返回值不同的时候,编译器无法识别是调用的哪个函数,所以,这是一种错误的做法,编译不通过。   

    重写的方法,的权限不能比父类的方法更加严格,如果父类是protected,而集继承的方法,就不能是private。java的default关键字的权限是同一个包级别的。

    java对大小写敏感,所以,仅仅是大小写不同的两个方法,不能是重写,而是两个方法。

    抽象类,是包含抽象方法的类,使用abstract关键字声明,java中的抽象类,类似C++中的纯虚函数,需要被继承和重写。

    Final相当于C#中的Constant常量,一旦被定义好后,就不可修改。

    匿名类,适用于比较固定的简单的场合,但是编译的时候还会编译成一个class。

    对象的equals方法和基本类型是不一样的,因为对象是在堆中创建的空间,而基本类型的数据只在栈中开辟空间,比如说两个值相同的整型数据,在栈中指向同一个地址,具有相同的hashCode,而通过两次new出来的对象,在堆中占有不同的空间,在栈中又不同的引用,不同的指针(java中没有指针的概念)。

5、异常处理

    在处理程序中的某些业务的时候,很有可能会遇到一些错误,而这些错误越早发现,越早处理越好,所以,java的语法规定,在调用这样的方法的时候,必须带有异常处理的相关操作。而这一点额方法在定义的时候都是带有throws关键字的。比如,流相关的操作(FileInputStream)等。

    java中错误分为三类:Error(无法处理)、Exception(必须要处理的)、Runtime Exception(可以不处理)。

   

    错误的处理,按照先小后大、及早抓取、不可扩大和缩小范围的原则,如果某个方法无法对错误处理,那么需要显示的将潜在的错误抛出。

    通过继承java.lang.Exception类,可以自定义异常可以为错误定义id号。

6、值得借鉴的设计思路——多态和外观模式的结合

    在java的事件监听机制中,MouseAdapter类实现了mouseListener接口,我们自定义的Monitor类,直接从MouseAdapter继承,解决了省去书写接口中没有必要的方法,代码显得比较简洁。

    也就是事先用一个类实现了某个接口内部复杂的方法,当我们在不同的场合,需要的时候,我们通过自定义类继承这个类,只去重写我们需要的方法,这样编码就简化了很多,这充分利用了面向对象的多态的思想和设计模式中外观模式,值得借鉴。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值