面向对象
面型对象是一种编程思想,它是对现实的一种抽象,面向对象会把相关的数据和方法组织为一个整体来看待。
面向过程也是一种编程思想,以过程为中心的编程思想。
Java是一种面向对象的编程语言。 面向对象程序的 OOP设计的优先:
- 与人类思维习惯一致;
- 隐藏信息,提高了程序的可维护性和安全性,实现模块化和信息隐藏;
- 提高了程序的复用性;
对象:用来描述客观事物的一个实体,由一组属性和方法构成。 属性:静态、成员变量、类变量 方法:动态、成员方法、类方法 类和对象的关系是抽象和具体的关系;类是多个对象进行抽象的结果,是实体对象的概念模型。一个对象仅仅是一个类的实例。(==类是对象的集合,对象是类的实体==) ==类是程序的基本单元==,类名由多个单词组成,每个单词首字母大写。 局部变量:方法或语句块内部定义的变量 成员变量:方法外部,类内部定义的变量
面向对象和面向过程区别可以参考:blog.csdn.net/lingyiwin/a…
内存管理
Java摒弃了C++中难以理解的多继承、指针、内存管理等概念;不用手动管理对象的生命周期。通过GC垃圾回收机制进行内存管理。
静态语言
静态语言就是在编译期间能够知道数据类型的语言,在运行前就能够检查类型的正确性,确定后不能更改。
Java语言是强类型语言
- 1:对于每一种数据类型都定义了明确的具体数据类型
- 2:在内存中分配不同大小的内存空间
Java中的数据类型 基本类型:布尔类型boolean;字符型char;数值类型(整数类型:byte、short、int、long;浮点类型float、double) 引用类型:类、接口、数组、空类型、 String BigDecimal类:表示大小数类型;BigInteger表示大整数类型。
整数类型 byete 1个字节 2的8次方;short 2个字节;int 4个字节;long 8个字节。
浮点类型 float 4个字节;double 8个字节
相对动态语言没有任何特定的情况需要制定变量的类型,在运行时确定数据类型。如JavaScript, var解决一切。
可移植
write once,run anywhere,熟悉的一次编译,到处运行。 Java的核心JVM(Java虚拟机)屏蔽了class文件和操作系统以及硬件之间的差异。从而实现可移植。
JVM:Java虚拟机,即Interpreter解释器,跨平台的实现
| 源文件 | 编译器Compiler | 字节码文件 | 解释器Interpreter | 解释器Interpreter |
|---|---|---|---|---|
| MyProgram.java | javac | MyProgram.class | jvm | 运行在计算机上 |
编译时:使用java编译器 运行时:使用Java解释器,通过网络 Java.class----》类加载器----》字节码校验器----》编译器/JIT代码生成器--》硬件
安装JDK后就有 了JRE和JVM JDK>JRE>JVM
多线程
从操作系统的角度,实现多线程有一下几种:
- 在用户空间实现多线程
- 在内核空间实现多线程
- 在用户和内核空间混合实现多线程
==Java语言就是通过在用户空间实现多线程。内核感知不到Jav存在多线程机制。==
高性能
中所周知,Java语言是解释性语言,通过JVM内嵌的解释器将字节码转换为机器码,转换过程效率较低。 随着Hotspot JVM提供的JIT编译器的出现,Java也实现了部分编译执行,大大提高了执行效率。
故Java不仅仅是一种解释执行的语言。
健壮性
- 强制类型机制
- 异常处理
- 垃圾自动收集 等都是健壮性的表现。
分布式
Java语言支持Internet应用,net api 提供网络编程类库。 如:URL,URLConnection、Socket、ServerSocket等。 Java的RMI(远程方式激活)机制都是开发分布式应用的重要手段。