我们知道编程语言是一个帮助我们和计算机“对话”的工具,我们可以通过它去让计算机做一些事。而JAVA语言又是其中的高级语言,那么什么是高级?机器语言和人类语言之间有着巨大的鸿沟,人们不断的想要跨过这个鸿沟,在这个过程中出现了一些“工具”,就是所谓的编程语言。通过这些语言我们也实现了和计算机沟通的能力,但是这些语言依然和自然语言有很大的差别,以至于学习这些语言变得困难,在这个问题上人们也在不断的改进,努力想创造出离我们的自然语言较为相近的编程语言。那么在目前为止JAVA语言可以说是相对比较接近自然语言的一种高级语言。在学习JAVA时不妨用自然语言去理解它。
一个JAVA程序是由不同的类组成的,但是程序所直接运行的却不是类,而是对象,对象是它所对应的类的实例化的一个实体。这个“类”和我们生活中的类型有着相同的理解,其实仔细想想我们的生活也是由很多不同类型的事物组成的。举一个例子,比如你突然想吃水果了,你和妈妈说给你一个水果,这个时候妈妈是不知道拿给你什么东西的,你只有说出一个具体的水果名,比如苹果,妈妈才会给你一个苹果。在这个例子中水果就相当于类,而苹果相当于对象,在JAVA中也是这样的当你想用一个类时,你不能直接调用这个类,必须要实例化(就相当于你要说出苹果这个词),这个过程就是实例化对象。
类中有三个元素,属性(一般是静态的特征),方法(可以理解为功能),构造器(也叫作构造方法)。
看下面这段代码:
public class Fruit { //定义了一个水果类
public Stringname; //定义名字属性
public double weight; //定义重量属性
public void f(){ //定义水果功效的方法
System.out.println(name+"有某种功效");
}
public static void main(String[] args){ //主函数
Fruit f1=new Fruit(); //实例化对象
f1.name="苹果"; //调用名字属性并赋值
System.out.println("我想要一个"+f1.name);
}
}
下面再来简单解释一下实例化对象就是Fruit f1=new Fruit();这句代码在内存中做了一些什么事,也就是对象的存储方式。
首先我们要知道在内存中是开辟了两个空间,一个是栈,还有一个叫堆。
执行这条指令时其实做的事是:
1.定义了一个f1的变量,此时把这个变量放入栈里; Fruitf1
2.然后new这个关键字构造了Fruit的实例,这时把Fruit这个类里面的属性,方法存入堆里。
3.最后还有一个赋值符号“=”,这个等号其实就相当于给力变量f1一个地址(Fruit在堆里的地址)。这个时候就把类和这个变量f1联系到一起了。
注:1.栈里面存的是地址
2.在java中规定,程序是不能直接访问堆里的内容的,必须要通过引用。也就是通过访问f1,间接访问Fruit。