Java基本概念

1、Java的特性和优势:简单性、面向对象、可移植性、高性能、分布式、多态性、多线程、安全性、健壮性。

2、Java 的运行机制,计算机高级编程语言类型有:编译型、解释型。Java 语言是这两种类型的结合,利用编辑器编写 Java 源程序,然后编译器将源程序编译成class文件,再利用虚拟机(解释器)解释执行,运行过程:载入、代码校验、解释执行。

3、Java运行时环境JRE包含:Java虚拟机、库凼数、运行Java应用程序和Applet所必须的文件。

开发环境JDK(又称SDK)包含:JRE的超集、编译器、调试器等开収工具。

4、Java运行环境的三项主要功能:

加载代码:由class loader完成;

代码校验:由bytecode verifier完成;

执行代码:由runtime interpreter完成。

5、Java的数据类型分为两大类,即基本数据类型和引用数据类型,在基本数据类型中有3类8种基本数据类型(逻辑型-boolean;文本型-char;数值型-byte、short、int、long、float、double),引用数据类型有类(class)、接口(interface)、数组(array),注意,引用数据类型的大小统一为4个字节,记录的是其引用对象的地址。byte类型(1字节)、short(2字节)、int(4字节)、long(8字节)、float(4字节)、double(8字节)。

6、&&:和&运算的结果是一样的,但是运算过程有点小区别。&:无论左边的运算结果是什么,右边都参与运算;&&:当左边为false时,右边不参与运算。

||:和|运算的结果是一样的,但是运算过程有点小区别。|:无论左边的运算结果是什么,右边都参与运算。||:当左边为true时,右边不参与运算。

7、异或运算中,当一个数异或运算同一个数两次,结果还是这个数本身,如a^b^b=a

8、栈内存:存储的都是局部变量,而且变量所属的作用域一旦结束,该变量就自动释放。

堆内存:存储是数组和对象(其实数组就是对象) 凡是new出来的都在堆中。

特点:每一个实体都有首地址值。堆内存中的每一个变量都有默认初始化值,根据类型的不同而不同。整数是0,小数0.0或者0.0f,boolean false char ‘\u0000‘。因此局部变量必须初始化,而全局变量则可以不初始化已有默认值。

9、数组

数组常见的两种异常:下标越界和空指针异常

数组的定义:数组是相同类型数据的集合,描述的是相同类型的若干个数据按照一定的先后顺序排列组合而成,其中每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它。

数组的四个基本特点:

1.长度固定,一旦被创建它的长度就是不可改发的;

2.其元素类型必须是相同类型,不允许出现混合类型;

3.数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型;

4.数组变量属于引用类型,数组也可以看做是对象,数组中的每个元素相当于该对象的成员变量,数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组本身是在堆中的。

10、成员变量和局部变量的区别:

成员变量定义在类中,整个类中都可以访问。 局部变量定义在函数,语句,局部代码块中,只在所属的区域有效。

成员变量存在于堆内存的对象中。局部变量存在于栈内存的方法中。

成员变量随着对象的创建而存在,随着对象的消失而消失。局部变量随着所属区域的执行而存在,随着所属区域的结束而释放。

成员变量都有默认初始化值。局部变量没有默认初始化值。

11、构成函数

构造函数:构建创造对象时调用的函数。

作用:可以给对象进行初始化,创建对象都必须要通过构造函数初始化。一个类中如果没有定义过构造函数,那么该类中会有一个默认的空参数构造函数。如果在类中定义了指定的构造函数,那么类中的默认构造函数就没有了。

一般函数和构造函数什么区别:

构造函数:对象创建时,就会调用与之对应的构造函数,对对象进行初始化,会调用只调用一次。

一般函数:对象创建后,需要函数功能时才调用, 可以被调用多次。

什么时候定义构造函数?

在描述事物时,该事物一存在就具备的一些内容,这些内容都定义在构造函数中。 构造函数可以有多个,用于对不同的对象进行针对性的初始化。多个构造函数在类中是以重载的形式来体现的。

12、静态代码块:随着类的加载而执行。而且只执行一次。作用:用于给类进行初始化。

13、static的特点:

static是一个修饰符,用于修饰成员。

static修饰的成员被所有的对象所共享。

static优先于对象存在,因为static的成员随着类的加载就已经存在了。

static修饰的成员多了一种调用方式,就可以直接被类名所调用 。 类名.静态成员 。

static修饰的数据是共享数据,对象中的存储的是特有数据。

14、成员变量和静态变量的区别

两个变量的生命周期不同:

成员变量随着对象的创建而存在,随着对象的被回收而释放。

静态变量随着类的加载而存在,随着类的消失而消失。

调用方式不同:

成员变量只能被对象调用。

静态变量可以被对象调用,还可以被类名调用。

别名不同:

成员变量也称为实例变量。

静态变量称为类变量。

数据存储位置不同:

成员变量数据存储在堆内存的对象中,所以也叫对象的特有数据.

静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据

15、静态使用的注意事项:

静态方法只能访问静态成员。(非静态既可以访问静态,又可以访问非静态)

静态方法中不可以使用this或者super关键字。

主函数是静态的。

16、抽象类

特点:

方法只有声明没有实现,该方法就是抽象方法,需要被abstract修饰。抽象方法必须定义在抽象类中。该类必须也被abstract修饰。

抽象类不可以被实例化。为什么?因为调用抽象方法没意义。

抽象类必须有其子类覆盖了所有的抽象方法后,该子类才可以实例化。否则,这个子类还是抽象类。

抽象类中有构造函数,用于给子类对象进行初始化。

抽象类可以不定义抽象方法, 但是很少见。目的就是不让该类创建对象。AWT的适配器对象就是这种类。

抽象关键字不可以和这些关键字共存?private、static、final

抽象类和一般类的异同点:

相同点:抽象类和一般类都是用来描述事物的,都在内部定了成员。

不同点:

一般类有足够的信息描述事物。抽象类描述事物的信息有可能不足。

一般类中不能定义抽象方法,只能定非抽象方法。抽象类中可定义抽象方法,同时也可以定义非抽象方法。

一般类可以被实例化。抽象类不可以被实例化。

抽象类一定是个父类,因为需要子类覆盖其方法后才可以对子类实例化。

17、继承和构造凼数

子类的实例化过程:子类中所有的构造函数默认都会访问父类中的空参数的构造函数。

为什么子类实例化的时候要访问父类中的构造函数呢?

那是因为子类继承了父类,获取到了父类中内容(属性),所以在使用父类内容之前,要先看父类是如何对自己的内容进行初始化的。所以子类在构造对象时,必须访问父类中的构造函数。注意:supre语句必须要定义在子类构造函数的第一行。因为父类的初始化动作要先完成。

18、final关键字

final是一个修饰符,可以修饰类,方法,变量。

final修饰的类不可以被继承。

final修饰的方法不可以被覆盖。

final修饰的变量是一个常量,只能赋值一次。

为什么要用final修饰变量。其实在程序如果一个数据是固定的,那么直接使用这个数据就可以了,但是这样阅读性差,所以它该数据起个名称。而且这个变量名称的值不能变化,所以加上final固定。

19、抽象类和接口的异同点

相同点:都是不断向上抽取而来的。

不同点:

抽象类需要被继承,而且只能单继承。接口需要被实现,而且可以多实现。

抽象类中可以定义抽象方法和非抽象方法,子类继承后,可以直接使用非抽象方法。接口中只能定义抽象方法,必须由子类去实现。

20、一个对象实例化过程

Person p = new Person();

JVM会读取指定的路径下的Person.class文件加载进内存,并会先加载Person的父类(如果有直接的父类的情况下).

在堆内存中的开辟空间,分配地址。

并在对象空间中,对对象中的属性进行默认初始化。

调用对应的构造函数进行初始化。在构造函数中,第一行会先到调用父类中构造函数进行初始化。父类初始化完毕后,再对子类的属性进行显示初始化。在进行子类构造函数的特定初始化。初始化完毕后,将地址值赋值给引用变量。

时间: 2024-11-08 18:08:40

Java基本概念的相关文章

一 JAVA整体概念以及安装部署

JAVA 基本概念  JVM(JAVA virtual machine)java虚拟机,是java的能跨平台的核心,java的跨平台实现,就是在各种系统中布置JVM,然后java应用运行在JVM中,相当于我玩我的你是什么系统与我无关.JRE(JAVA Runtime environment)JAVA运行环境,是Java程序运行的基础环境,包括JVM.核心类库和相关文件,不包括编译器.JDK(JAVA Develop Kit)JAVA开发工具包,有各种版本,都可以在Oracle下载,JDK包括JR

深入理解Java闭包概念

闭包又称词法闭包 闭包最早定义为一种包含<环境成分>和<控制成分>的实体. 解释一:闭包是引用了自由变量的函数,这个被引用的变量将和这个函数一同存在. 解释二:闭包是函数和相关引用环境组成的实体. 注:<自由变量>:除了局部变量的其他变量 简单理解:闭包能够将一个方法作为一个变量去存储,这个方法有能力去访问所在类的自由变量. Java中闭包实现 关键点: 如何用变量去存储方法? java中能够保存方法的变量指的就是普通的对象 如何让这个普通对象能够访问所在类的自由变量?

Java模块化概念解惑与现状总结

在过去几年,Java模块化一直是一个活跃的话题.从JSR 277(现已废止)到JSR 291,模块化看起来是Java进化过程中的必经一环.即便是基于JVM的未来语言,比如Scala,也考虑了模块化的问题.本文是关于模块化Java系列文章中的第一篇,讨论模块化的含义,以及为什么要关注它. 51CTO编辑推荐:OSGi入门与实践全攻略 什么是模块化? 模块化是个一般概念,这一概念也适用于软件开发,可以让软件按模块单独开发,各模块通常都用一个标准化的接口来进行通信.实际上,除了规模大小有区 别外,面向

JAVA线程概念

一.操作系统中线程和进程的概念 现在的操作系统是多任务操作系统.多线程是实现多任务的一种方式. 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程.比如在Windows系统中,一个运行的exe就是一个进程. 线程是指进程中的一个执行流程,一个进程中可以运行多个线程.比如java.exe进程中可以运行很多线程.线程总是属于某个进程,进程中的多个线程共享进程的内存. "同时"执行是人的感觉,在线程之间实际上轮换执行. 二.Java中的线程 在J

Java分层概念(转)

layout: default title: Java分层概念(转) category: [技术, Java, 代码学习] comments: true --- Java分层概念(转) 对于分层的概念,似乎之间简单的三层,多了,就有点难以区分了,所以收藏了这个. ervice是业务层 action层即作为控制器 DAO (Data Access Object) 数据访问 1.JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分?(下面所描述的service层就是b

Java多线程概念简介 多线程中篇(一)

Java的线程与操作系统的线程 在线程的相关介绍中,有讲到“线程的实现”分为三种:内核支持,用户级以及两者混合.(这只是一种简要的分类) Java线程在JDK1.2之前,是用户线程实现的 而在JDK1.2中,线程模型变为基于操作系统原生线程模型来实现的 所以说Java虚拟机中线程的映射实现,是受制于操作系统的,操作系统支持怎样的线程模型,决定了Java虚拟机中线程的样子. 虚拟机规范中也并未限定Java线程需要使用哪种线程模型来实现. 线程模型只对线程的并发规模和操作成本产生影响,对Java程序

Java 基本概念

Java 基本概念 1. Java 语言的优点? 简单.高效 Java 语言与 C++ 类似,如果用户了解 C++ 和面向对象的概念,就可以很快编写出 Java 程序:此外,Java 又不同于诸如 C++ 语言提供的各种各样的方法,它只提供了基本的方法,这样就减少了编程的复杂性,例如去掉了头文件.指针变量.结构.运算符重载.多重继承等复杂特性.Java 语言虽然简单,却很高效,它可以用面向对象的方法来描述用户的每一个动作. 面向对象 Java 语言是一种新的面向对象的程序设计语言,它除了几种基本

你猜这个题输出啥?-- 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各种概念 Core Java总结

Base: OOA是什么?OOD是什么?OOP是什么?{ oo(object-oriented):基于对象概念,以对象为中心,以类和继承为构造机制,来认识,理解,刻画客观世界和设计,构建相应的软件系统的一门方法;本意----模拟人类的思维方式,使开发,维护,修改更加容易 - ooa(object-oriented analysis):强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是 对管理业务现状和方法的分析-------其实就是进一步对oo进行细化,初步得出

JAVA理论概念大神之概念汇总

我个人觉得,JAVA之所以能够经久不衰,有一个很重要的原因就是:JAVA的理论总是给人一种,虽然不知道是什么,但是感觉很厉害的样子.就单是这一点,他就已经超越许多其他语言了,至少吹牛的时候谈资总是很多. 废话不多说(其实一整篇都是废话),今天就来汇总一下,一些个人见识的概念(都是从项目中挑选出来的,能力有限数量也有限),请多多指教! 1. 面向对象编程 这个虽然不是什么特别的东西,但是却是JAVA的立身之本.万事万物皆对象.那面向对象,基本功能好处就是,封装.继承.多态等. 2. 面向切面编程