java的基本语言元素_JAVA语言的基本元素:类和对象

面向对象的核心概念

类(Class)和对象(Object)是面向对象的核心概念

类是对一类事物的描述,是抽象的,概念上的定义。

对象是实际存在的该类事物的每个个体,因而也称为对象。

“万事万物皆对象”。

设计类其实就是设计类的成员

类的简单及创建调用

package com.chenxi.java;

/*

一、设计类,其实就是设计类的成员

属性=(等于)成员变量=(等于)field=(等于)域、字段

方法=成员方法=函数=method

*/

public class OOPTest {

public static void main(String[] age){

Person p1 = new Person();//创建类的对象,实例化一个类

//调用对象结构;属性与方法

//调用属性

p1.name = "tom";//调用赋值

p1.isMale=true;//调用赋值

System.out.println(p1.name);//调用打印输出

//调用方法

p1.eat();

p1.sleep();

p1.talk("chinese");

}

}

//创建类

class Person{

//类的属性:对应类中的成员变量

String name;

int age=1;

boolean isMale;

//类的方法: 对应类中成员方法

public void eat(){

System.out.println("人可以吃饭");

}

public void sleep(){

System.out.println("人可以休息");

}

public void talk(String language){

System.out.println("人可以说话"+language);

}

}

如果创建一个类的多个人对象,则每个对象都独立的拥有这个类的属性。

package com.chenxi.java;

/*

一、设计类,其实就是设计类的成员

属性=(等于)成员变量=(等于)field=(等于)域、字段

方法=成员方法=函数=method

二、类和对象的使用(面向对象的思想)

1.创建类,设计类的成员

2.创建类的成员

3.通过"对象.属性"或者"对象.方法()"调用对象的结构

三、如果创建一个类的多个对象,则每个对象都独立拥有一套类的属性。(非static的)

意味着如果修改一个对象的属性a。则不影响另外一个对象属性a的值

*/

public class OOPTest {

public static void main(String[] age){

Person p1 = new Person();//创建类的对象,实例化一个类

//调用对象结构;属性与方法

//调用属性

p1.name = "tom";//调用赋值

p1.isMale=true;//调用赋值

System.out.println(p1.name);//调用打印输出

//调用方法

p1.eat();

p1.sleep();

p1.talk("chinese");

//***************************

Person p2 = new Person();

System.out.println(p2.name); //输出null;有默认初始化值

Person p3 = p1;//将p1对象保存的对象地址值复制给p3,p1与p3指向同一个地址值

System.out.println(p3.name);//输出p3的name属性值所以也是tom

p3.age = 3;//修改p3属性age值其实就是修改p1属性age的值,因为地址空间相同

System.out.println(p1.age);//打印p1属性age的值所以是3

}

}

//创建类

class Person{

//类的属性:对应类中的成员变量

String name;

int age=1;

boolean isMale;

//类的方法: 对应类中成员方法

public void eat(){

String food ="烙饼";//局部变量

System.out.println("人可以吃饭");

}

public void sleep(){

System.out.println("人可以休息");

}

public void talk(String language){//局部变量

System.out.println("人可以说话"+language);

}

}

测试

tom

人可以吃饭

人可以休息

人可以说话chinese

null

tom

3

对象创建和使用的内存解析

堆(Heap),此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。这一点在Java虚拟机规范中的描述是:所有的对象实例以及数组都要在堆上分配。

通常所说的栈(Stack),是指虚拟机栈。虚拟机栈用于存储局部变量等。局部变量表存放了编译期可知长度的各种基本数据类型(boolean、byte、char 、 short 、 int 、 float 、 long 、double)、对象引用(reference类型,它不等同于对象本身,是对象在堆内存的首地址)。 方法执行完,自动释放

方法区(Method Area),用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。

类中属性的使用

属性(成员变量) VS 局部变量

1.相同点

1.1定义变量的格式  :数据类型 变量名 = 变量值

1.2 先声明,后使用

1.3 变量都有其作用域

2.不同点

2.1 在类中声明的位置的不同

属性:直接定义在类的一对{}内

局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量

2.2    关于权限修饰符的不同

属性: 可以在声明属性时,指明其权限,使用权限修饰符

常用的权限修饰符有:private、public、缺省、protected----》封装性

局部变量不可以使用修饰符

2.3默认初始化值

属性:类的属性根据其类型都有默认初始化值

整型(byte、short、int、long):0

浮点型(float、double):0.0

字符型(char): 0(或‘\u0000’)

布尔型(boolean):false

引用数据类型(类、数组、接口):null

局部变量: 没有初始化值;调用之前一定要赋值;特别的形参在调用时赋值即可

内存中加载的位置不同

属性:加载到堆空间中(非static)

局部变量:加载到栈空间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,不是基本类型的数组是指存储对象引用的数组,它们也是Java语言提供的一种数据结构,可以用来存储同类型的对象。 举个例子,假设我们有一个名为`Person`的类,表示一个人的信息,包括姓名和年龄: ``` public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } ``` 我们可以定义一个`Person`类型的数组来存储多个人的信息: ``` Person[] persons = new Person[3]; ``` 这里,`persons` 是一个`Person`类型的数组对象,它包含三个元素对象,每个元素对象都是一个`Person`类型的实例。我们可以通过下标来访问数组中的元素,例如: ``` persons[0] = new Person("张三", 20); persons[1] = new Person("李四", 25); persons[2] = new Person("王五", 30); ``` 这里,`persons[0]`、`persons[1]`、`persons[2]` 分别是数组中的三个元素对象,它们都是`Person`类型的实例。可以通过调用对象方法来获取元素对象中的属性值,例如: ``` String name = persons[0].getName(); int age = persons[0].getAge(); ``` 这里,`persons[0].getName()` 返回的是元素对象中`name`属性的值,即`"张三"`;`persons[0].getAge()` 返回的是元素对象中`age`属性的值,即`20`。 需要注意的是,不是基本类型的数组中的元素是对象引用,而不是对象本身。因此,对于每个元素对象,它们实际上是指向堆中某个`Person`类型对象的引用,而不是`Person`类型对象本身。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值