1. 面向对象的特征
面向对象的特征包括抽象、封装、继承和多态。

抽象就是忽略一个主题中与当前目标无关的某些方面,以便更加充分的注意到与当前目标有关的方面。抽象并不打算了解全部的问题,而只是其中的一部分,暂时不用考虑细节。抽象包括两个方面,第一是过程抽象,第二是数据抽象。

封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

  封装了好处在于将变化进行了隔离,便于使用,提高了服用性,同时由于可以避免外部对于属性的直接访问,提高了安全性。

  封装的原则:将不需要对外提供的内容都隐藏起来;把属性都隐藏,提供公共的方法对其访问。

  private是一个权限修饰符,被private修饰的成员只在本类中有效。私有是封装的一种体现,但封装不仅仅是私有。

继承,继承是一种连接类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述性的方法,一个类可以从一个现有的类派生,新类继承了原始类的特性,新类称为子类或者派生类,原始类称为父类也叫基类。派生类可以从它的基类继承方法和实例变量,并且类可以增加或者修改新的方法,使其更适合特殊的需要。

多态,多态性是指允许不同类的对象对同一个消息做出响应,多态性包括参数化多态性和包含多态性,多态性语言具有灵活、抽象、行为共享和代码共享的优势,很好的解决了应用程序中函数同名的问题。

2. Overload和Override有什么区别
 方法的重写overriding和重载Overloading是java多态性的不同表现。重写Overriding是父类和子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对他而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading).

3. abstract class 和 interface有什么区别?
 抽象类用于创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。接口是抽象类的变体。在接口中,所有方法都是抽象的。抽象类的子类为他们的父类中的所有抽象方法提供实现,否则他们也是抽象类。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。

4. 当一个对象实例作为一个参数被传递到方法中时,参数的值就是该对象的引用,对象的内容可以在被调用的方法中改变,但对象的引用是永远不会变的。

5. abstract的method是否可以同时是static,是否可以同时是native,是否可以是synchronized?
  都不能。
    abstract用来声明抽象的方法,抽象方法并没有方法类,不能被直接调用,必须在子类overriding后才能使用,所以访问被abstract修饰的方法依赖于具体的对象实例,而被static修饰的方法是被直接访问的,这就引发了逻辑中的冲突,同时还要注意,父类中是静态方法,子类中不能覆盖为非静态方法。
  native修饰的方法是本地方法,该方法的实现由非java语言实现,比如c语言,一般用于java与外界语言交互或者与操作系统交互,native可以和除abstract之外的所有java标识符连用,因为native方法是有实现体的,只不过这些实现体是由非java语言实现的,但是abstract却是显明的指定这个方法是没有实现体的。
  synchronized,用于防止多个线程同时调用一个对象的该方法,使用它的前提是该方法可以被对象直接调用的,显然和abstract不能同时连用。

6. 接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可继承实体类?
 接口可以继承接口。抽象类可以实现接口,抽象类可以继承实体类,但前提是实体类必须有明确的构造函数。

7. Java关键字注意点
  所有的java关键字都是小写的
  goto和const是保留关键字,在java中没有使用
  true,false,null不是严格意义上的关键字,而是文字常量
8. 数组
  数组的两种初始化方式:静态初始化和动态初始化
  动态初始化数组必须给出长度,否则将报"缺少数组维数"的错误
  动态初始化二维数组时,可以只指定第一维德长度而不指定第二维的
  当数组包含的元素是引用数据类型的时候,必须为每个元素实例化,否则在使用的时候会出现空指针异常。

9. float和double都不能进行精确运算。
  例如2.0-1.1并不等于0.9,因为计算机使用的二进制并不能准备的表示浮点数
  不能简单的使用四舍五入的方法解决上述问题
  可以使用BigDecimal类来解决这个问题。
  BigDecimal a1 = new BigDecimal(Double.toString(2.0));
  BigDecimal a2 = new BigDecimal(Double.toString(1.1));
  System.out.println(a1.subtract(a2).doubleValue());

10. 自增自减运算符陷阱

  main(String[] args){
    int j = 0;
    for(int i = 0; i < 100; i++){
      j = j ++;
    }
    System.out.println(j);//打印出来的结果是0,因为j = j++,jvm工作时,先运算j++然后将j自增之前的值赋给左侧的j
  }

11. 字符与字符串陷阱
  System.out.println("a" + "b");// ab, 字符串的拼接
  System.out.println('a' + 'b');// 195, 字符a的ascii码加上b的ascii码
  System.out.println("a" + 'b');// ab,字符b被转化成了字符串b

12. java中的异常处理机制的简单原理和应用
  java程序违反了java的语义规则时,java虚拟机就会将发生的错误表示为一个异常。违反语义规则包括两种情况。一种是java类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException.另外一种情况就是java允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时使用throw关键字引发异常。所有的异常都是java.lang.Throwable的子类.

13. finalize方法是在垃圾回收器删除对象之前对这个对象调用的一个方法.

14. 什么时候使用assert?
  通常在开发和测试时使用,在软件发布后关闭。

15. 构造函数

构造函数:构建创造对象时调用的函数,创建对象都必须要通过构造函数初始化。

作用:可以给对象进行初始化。

一个类中如果没有定义过构造函数,那么该类中会有一个默认的空参数构造函数,如果在类中定义了指定的构造函数,那么类中的默认构造函数就没有了。

一般函数和构造函数什么区别呢?

a. 构造函数:对象创建时,就会调用与之对应的构造函数,对对象进行初始化。
    一般函数:对象创建后,需要函数功能时才调用。

b. 构造函数:对象创建时,会调用只调用一次。
    一般函数:对象创建后,可以被调用多次。

什么时候定义构造函数呢?

在描述事物时,该事物一存在就具备的一些内容,这些内容都定义在构造函数中。

构造函数可以有多个,用于对不同的对象进行针对性的初始化.
多个构造函数在类中是以重载的形式来体现的。

细节:
1,构造函数如果完成了set功能。set方法是否需要。
2,一般函数不能直接调用构造函数。
3,构造函数如果前面加了void就变成了一般函数。
4,构造函数中是有return语句的,ps,可以利用这个特点来控制构造函数的初始化,比如if(age>10){return;}用来实现如果age>10那么就拒绝初始化.

16. this引用

当成员变量和局部变量重名,可以用关键字this来区分。如   

Person(String name)
{this.name = name;
}

  this : 代表对象。代表哪个对象呢?当前对象。

this就是所在函数所属对象的引用。
简单说:哪个对象调用了this所在的函数,this就代表哪个对象。

this也可以用于在构造函数中调用其他构造函数。
注意:只能定义在构造函数的第一行。因为初始化动作要先执行。

17. 字符串的拼接:

  为连接n个字符串而重复的使用字符串连接操作符(+),需要n的平方级的时间。例如: s4 = s1 + s2 + s3;

  不过如果被拼接的字符串都是字面量的话,java编译器在编译器就会将其优化。如: S4= "a" + "b" + "c";变异完成的时候S4的值就是"abc".

  

转载于:https://www.cnblogs.com/byron0918/p/4663211.html

Java基础总结(一)相关推荐

  1. Java基础入门语法和安装

    1. Java概述 1.1 Java语言背景介绍(了解) 语言:人与人交流沟通的表达方式 计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言 Java语言是美国Sun公司(Stanford Un ...

  2. Java笔记整理-02.Java基础语法

    1,标识符 由英文字母.数字._(下划线)和$组成,长度不限.其中英文字母包含大写字母(A-Z)和小写字母(a-z),数字包含0到9. 标识符的第一个字符不能是数字(即标识符不能以数字开头). 标识符 ...

  3. java基础(十三)-----详解内部类——Java高级开发必须懂的

    java基础(十三)-----详解内部类--Java高级开发必须懂的 目录 为什么要使用内部类 内部类基础 静态内部类 成员内部类 成员内部类的对象创建 继承成员内部类 局部内部类 推荐博客 匿名内部 ...

  4. Java基础概念性的知识总结

    属于个人的所学的知识总结,不是全面的 1.JDK.JRE和JVM三者的区别 01.JDK:(Java Development ToolKit)Java开发工具包,是整个Java的核心.包括了Java的 ...

  5. 我的面试标准:第一能干活,第二Java基础要好,第三最好熟悉些分布式框架!...

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:hsm_computer www.cnblogs.com/J ...

  6. 叮!您收到一份超值Java基础入门资料!

    摘要:Java语言有什么特点?如何最大效率的学习?深浅拷贝到底有何区别?阿里巴巴高级开发工程师为大家带来Java系统解读,带你掌握Java技术要领,突破重点难点,入门面向对象编程,以详细示例带领大家J ...

  7. java重要基础知识点_必看 | 新人必看的Java基础知识点大梳理

    原标题:必看 | 新人必看的Java基础知识点大梳理 各位正在认真苦学Java的准大神,在这烈日炎炎的夏季里,老九君准备给大家带来一个超级大的"冰镇西瓜,"给大家清凉一下,压压惊. ...

  8. Java基础-Date类常用方法介绍

    Java基础-Date类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.毫秒值概念 我们在查阅Date类的API文档时,会发现这样的一句话:"The cl ...

  9. [Spring 深度解析]第1章 Java基础

    第1章 ◄Java基础► 在学习Spring之前我们需要对Java基础语法有一定的了解,Java中最重要的两个知识点是注解和反射.注解和反射在Spring框架中应用的最广泛.掌握注解和反射,有助于后面 ...

  10. 清华学长免费分享Java基础核心知识大总结(1)

    自学Java,如果觉得看<Java编程思想>或者<Core Java>等之类的"圣经"觉得内容太多,一下子吃不透的话,不妨看看这本<Java基础核心总 ...

最新文章

  1. setstate是同步还是异步_【vert.x准备篇1】同步和异步,阻塞和非阻塞概念澄清
  2. python 常用内置函数_Python小白必备的8个最常用的内置函数(推荐)
  3. 入坑emacs之配置文件 .emas.d/init.el -v1.0
  4. 怎么判断日出时间早晚_个个美哭!2020下半年国内旅行时间表出炉!你最想去哪个?...
  5. 探索比特币源码9-顺藤摸瓜之通过RPC读源码
  6. java 同步锁_Java多线程:synchronized同步锁的使用和实现原理
  7. BGP的community属性
  8. 知网研学不同电脑端同步无效问题
  9. xp提示计算机内存不足,在xp系统中,经常提示虚拟内存不足的原因是什么?
  10. NY--234 -- 吃土豆 [二维动态规划]
  11. 计算机输入法无法输入小写字母,电脑打不出小写字母了怎么办
  12. idea怎么光标多选
  13. Java小游戏项目之坦克世界
  14. Chorme打不开网页-更改搜索引擎
  15. 好玩系列:拥有它,XML文件少一半--更方便的处理View背景
  16. mycat中间件(四)mycat目录结构文件及作用
  17. VBA代码合集(更新2023.01.05)
  18. 好用的数据恢复软件记录
  19. Fast R-CNN 简单梳理
  20. 你所不了解的第五人格手游剧情解析?你都玩懂第五人格了吗?

热门文章

  1. [react] 怎么在React中引入其它的UI库,例如Bootstrap
  2. 前端学习(3271):js中this的使用
  3. 前端学习(3099):vue+element今日头条管理-使用富文本比编辑器
  4. [css] 为什么说css中能用子代选择器的时候不要用后代选择器?
  5. 工作259:uni--页面--验证码添加
  6. 前端学习(2048)vue之电商管理系统电商系统之实现首页内容自定制
  7. 前端学习(1845)vue之电商管理系统项目实战的学习目标
  8. 前端学习(1811):前端调试之css装饰cursor练习
  9. 前端学习(1543):MVC的组成部分
  10. spring学习(22):分层架构