共计 2360 个字符,预计需要花费 6 分钟才能阅读完成。
相比 C++,Java 是一种更纯正的面向对象编程语言。Java 语言假如你只进行面向对象编程。开始学习之前,咱们须要将思维置于面向对象的世界。
对象操纵
名字代表什么?玫瑰即便不叫玫瑰,也仍旧芳香 —莎士比亚
所有的编程语言都会操纵内存中的元素。有时程序员必须要无意识地间接或间接地操纵它们。在 C/C++ 中,对象的操纵是通过指针来实现的。Java 利用万物皆对象的思维和繁多统一的语法形式来简化问题。虽万物皆可为对象,但咱们所操纵的标识符实际上只是对对象的“援用”。举例:咱们能够用遥控器(援用)去操纵电视(对象)。只有领有对象的“援用”,就能够操纵该“对象”。此外,没有电视,遥控器也能够独自存在。
上面来创立一个 String 援用,用于保留单词或语句。代码示例:
String s;
这里咱们只是创立了一个 String 对象的援用,而非对象。间接拿来应用会呈现谬误:因为此时你并没有给变量 s 赋值 – 指向任何对象。通常更平安的做法是:创立一个援用的同时进行初始化。代码示例:
String s = "关注公众号『码农洞见』";
对象创立
在 Java 中,咱们应用 new 操作符来创立一个新对象。new 关键字代表:创立一个新的对象实例。所以,咱们也能够这样来示意后面的代码示例:
String s = new String(关注公众号『码农洞见』");
数据存储
那么,程序在运行时是如何存储创立的对象呢?尤其是内存是怎么调配的。有 5 个不同的中央能够存储数据:
- 寄存器(Registers)最快的存储区域,不同于 C /C++ 容许开发者向编译器倡议寄存器的调配,Java 无奈间接操作寄存器。
- 栈内存(Stack)存在于惯例内存 RAM,整个生命周期,存储如对象援用。
- 堆内存(Heap)通用的内存池(也在 RAM 区域),所有 Java 对象都存在于其中。不须要晓得对象必须在堆内存上停留多长时间。创立一个对象时,会主动在堆中进行内存调配。
- 常量存储(Constant storage)常量值通常间接放在程序代码中,因为它们永远不会扭转。
- 非 RAM 存储(Non-RAM storage)数据齐全存在于程序之外,在程序未运行以及脱离程序控制后仍然存在。
根本类型的存储
Java 应用了和 C/C++ 一样的策略不是应用 new 创立变量,而是应用一个“主动”变量。这个变量间接存储 ” 值 ”,并置于栈内存中,因而更加高效。Java 确定了每种根本类型的内存占用大小。这些大小不会像其余一些语言那样随着机器环境的变动而变动。这种不变性也是 Java 更具可移植性的一个起因。
数组的存储
Java 的设计次要指标之一是安全性,因而许多困扰 C 和 C++ 程序员的问题不会在 Java 中再现。在 Java 中,数组应用前须要被初始化,并且不能拜访数组长度以外的数据。
对象清理
大多数程序语言都有作用域的概念。作用域决定了在该范畴内定义的变量名的可见性和生存周期。在 C、C++ 和 Java 中,作用域是由大括号 {} 的地位决定的。例如:
{
int x = 12;
// 仅 x 变量可用
{
int q = 96;
// x 和 q 变量皆可用
}
// 仅 x 变量可用
// 变量 q 不在作用域内
}
Java 变量只有在其作用域内才可用。缩进使得 Java 代码更易于浏览。因为 Java 是一种自在格局的语言,额定的空格、制表符和回车并不会影响程序的执行后果。在 Java 中,你不能执行以下操作,即便这在 C 和 C++ 中是非法的:
{
int x = 12;
{int x = 96; // Illegal}
}
在上例中,Java 编译器会在提醒变量 x 曾经被定义过了。因而,在 C/C++ 中将一个较大作用域的变量 ” 暗藏 ” 起来的做法,在 Java 中是不被容许的。因为 Java 的设计者认为这样做会导致程序凌乱。
Java 对象与根本类型具备不同的生命周期。当咱们应用 new 关键字来创立 Java 对象时,它的生命周期将会超出作用域。因而,上面这段代码示例:
{String s = new String("码农洞见");
}
// 作用域起点
上例中,援用 s 在作用域起点就完结了。然而,援用 s 指向的字符串对象仍然还在占用内存。Java 通过垃圾回机制开释内存摒弃了 C ++ 操作内存可能呈现的诸多问题。
类的创立
大多数面向对象的语言都应用 class 关键字类来形容一种新的对象。通常在 class 关键字的前面的紧跟类的的名称。如下代码示例:
class Hollywood {
int i;
String s;
}
当咱们创立好一个类之后,咱们能够往类里寄存两种类型的元素:办法(method)和字段(field)。
字段:类的字段能够是根本类型,也能够是援用类型。如果类的字段是对某个对象的援用,那么必须要初始化该援用将其关联到一个理论的对象上。
办法:在许多语言(如 C 和 C++)中,应用术语 函数 (function) 用来命名子程序。在 Java 中,咱们应用术语 办法(method)来示意“做某事的形式”。
[返回类型] [办法名](/* 参数列表 */){// 办法体}
返回类型:办法的返回类型表明了当你调用它时会返回的后果类型。参数列表则显示了可被传递到办法外部的参数类型及名称。办法名和参数列表统称为办法签名(signature of the method)。签名作为办法的惟一标识。
[对象援用].[办法名](参数 1, 参数 2, 参数 3);
小试牛刀
最初,咱们开始编写第一个残缺的程序。
import java.util.*;
public class HelloFans {public static void main(String[] args) {System.out.println("粉丝好,感激大家关注和反对码农洞见!");
}
}
程序输入:
粉丝好,感激大家关注和反对码农洞见!
本篇文章向你展现了简略的 Java 程序编写以及该语言相干的基本概念。通过浏览对 Java 语言及一些根本思维要有个总体意识。
最初
关注公众号『码农洞见』,每天有提高,有你才狂热。