1、Java基础概念

1.面向对象和面向过程的区别

面向过程
优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展
面向对象
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护
缺点:性能比面向过程低

2.Java的四个基本特性(抽象、封装、继承,多态)

抽象:就是把现实生活中的某一类东西提取出来,用程序代码表示,我们通常叫做类或者接口。抽象包括两个方面:一个是数据抽象,一个是过程抽象。数据抽象也就是对象的属性。过程抽象是对象的行为特征。
封装:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行封装隐藏。封装分为属性的封装和方法的封装。
继承:是对有着共同特性的多类事物,进行再抽象成一个类。这个类就是多类事物的父类。父类的意义在于抽取多类事物的共性。
多态:允许不同类的对象对同一消息做出响应。方法的重载、类的覆盖正体现了多态。

3.重载和重写的区别

重载:发生在同一个类中,方法名必须相同,参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可以不同,发生在编译时。

重写:发生在父子类中,方法名、参数列表必须相同,返回值小于等于父类,抛出的异常小于等于父类,访问修饰符大于等于父类;如果父类方法访问修饰符为private则子类中就不是重写。

4.构造器Constructor是否可被override

构造器不能被重写,不能用static修饰构造器,只能用public private protected这三个权限修饰符,且不能有返回语句。

5.访问控制符public,protected,private,以及默认的区别

private只有在本类中才能访问;
public在任何地方都能访问;
protected在同包内的类及包外的子类能访问;
默认不写在同包内能访问。

6.是否可以继承String类#


String类是final类故不可以继承,一切由final修饰过的都不能继承。

7.String和StringBuffer、StringBuilder的区别

  • 可变性

String类中使用字符数组保存字符串,private final char value[],所以string对象是不可变的。

StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存字符串,char[] value,这两种对象都是可变的。

  • 线程安全性

String中的对象是不可变的,也就可以理解为常量,线程安全。AbstractStringBuilder是StringBuilder与StringBuffer的公共父类,定义了一些字符串的基本操作,如expandCapacity、append、insert、indexOf等公共方法。StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。StringBuilder并没有对方法进行加同步锁,所以是非线程安全的。

  • 性能

每次对String 类型进行改变的时候,都会生成一个新的String 对象,然后将指针指向新的String 对象。StringBuffer每次都会对
StringBuffer 对象本身进行操作,而不是生成新的对象并改变对象引用。相同情况下使用
StirngBuilder 相比使用
StringBuffer 仅能获得10%~15% 左右的性能提升,但却要冒多线程不安全的风险。

8.hashCode和equals方法的关系

equals相等,hashcode必相等;hashcode相等,equals可能不相等。

原文地址:https://www.cnblogs.com/zupengliu/p/10802449.html

时间: 2024-10-10 20:25:38

1、Java基础概念的相关文章

h--5--菠菜源码下载java基础概念

1.第一个应用程序:Hello World!package my.xkyy.lsc;public class HelloWorld {public static void main(String[] args) { System.out.println("hello wrold!");}}2.数组:int[] a=new int[100];3.字节(byte):8位二进制数4.UTF-8编码:一个英文字符等于一个字节,h--5--菠菜源码下载QQ:2152876294 网址diguay

Java基础概念初识

Shiro:Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码学和会话管理.使用Shiro的易于理解的API,您可以快速.轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序. 三个核心组件: Subject,用户安全操作 SecurityManager ,框架核心,典型的Facade,管理各种安全服务 Realms,shiro与应用数据间的"桥梁"或者"连接器".权限验证,从配置的Realms中查找用户及其权限信

2016第20周四java基础概念

简单的说JDK=JRE+Java编译器.调试器.工具类库等:JRE=JVM(类似于jre目录下的bin)+必要运行的类库(类似于jre目录下的lib) JVM:Java Virtual Mechinal(JAVA虚拟机).JVM是JRE的一部分,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的.JVM有自己完善的硬件架构,如处理器.堆栈.寄存器等,还具有相应的指令系统.JVM 的主要工作是解释自己的指令集(即字节码)并映射到本地的 CPU 的指令集或 OS 的系统调

你猜这个题输出啥?-- java基础概念

最近在看java编程思想,大部分内容都觉得没啥意思,但是突然看到一个基本概念(似乎都忘了),于是写了测试题,我想这辈子也不会忘这个概念了. 题目如下: public class Suber extends Last { public Suber() { } public Suber(int i) { System.out.println("Suber(" + i + ")"); } public Suber(String i) { super.CommonBase(

粤嵌java培训第一天笔记-java基础概念

一.二进制数 1.最高位为0,表示正数:最高位为1,表示负数. 2.相应的负数与正数之间进行转换方式:通过补码方式进行转换,即:取反再加1. 例如:0000 0001 表示 +1:通过对 0000 0001 取反后得:1111 1110 ,再对1111 1110+1=1111 1111,二进制 1111 1111 等于 -1. 3.8位二进制数,能表示的最大值和最小值. 最大值:0111 1111=127:即2^(8-1)-1=127.(因为从0开始计算,故最多能表示0~127). 最小值:10

java 基础概念 -- 数组与内存控制

问题1: Java在声明数组的过程中,是怎样分配内存的? 在栈内存中 建一个数组变量,再在堆内存中 建一个 数组对象.至于详细的内存分配细节,还得看 该初始化是 数组动态初始化 还是 数组静态初始化. 问题2: Java数组的初始化方式 有哪几种? 两种:动态初始化 和 静态初始化.动态初始化 指的是 仅仅指定数组的长度,不指明每个数组的元素.  静态初始化 指的是 详细指定数组的每个元素. 问题3: Java 的基本类型数组 和 应用类型数组 之间,在初始化时的内存分配机制有什么差别? Jav

菠菜源码搭建与java基础概念

1.java jvm的功能:通过 ClassLoader 寻找和装载 class 文件?? ??? ??? ?? 解释字节码成为指令并执行,提供 class 文件的运行环境?? ??? ??? ?? 进行运行期间垃圾回收 菠菜源码搭建QQ:2152876294 网址diguaym.com?? ??? ??? ?? 提供与硬件交互的平台?? ?2.运算符优先级:单目 >运算>移位>比较>按位>逻辑>三目 >赋值?? ??? ??? ?单目:单目运算符+ –(负数)

Java基础概念

对象:职能化.是存在的具体实体,具有明确定义的特征和行为. 面向对象:一种认识事物的方式,注重对事物整体的认知,最符合人类自然的思维习惯. 类是对象的抽象,对象是类的实例. 类是具有相同属性和行为的一组对象的集合. 在软件系统中,我们用类来模拟现实生活中的实体. 属性用于描述对象的特征,对象之间属性彼此独立,一个对象的属性的变化不会影响其他对象属性的变化,由于属性是属于一个对象的组成部分,所以属性也叫做成员变量. 静态变量创建在对象之外,是所有对象共享的变量,静态变量发生变化,会影响所有的对象.

JAVA基础学习之路(一)

JAVA基础概念: PATHl: path属于操作系统的属性,是系统用来搜寻可执行文件的路径,个人理解是类似于linux中的全局变量 CALSSPATH:java程序解释类文件时加载文件的路径 注释: 单行注释  // 多行注释 /*.......*/ 文档注释 /**......*/ JAVA两类数据类型: 1基本类型 数值类型: 整形:short ,int,long 浮点型:float,double 字符类型:char 布尔类型:boolean 2引用类型 数组,类,接口 数据类型转换基本原