首页 > 编程语言 >【Java编程教程】详解Java 中的对象和类

【Java编程教程】详解Java 中的对象和类

时间:2023-07-20 21:12:00浏览次数:32  
标签:Java 对象 void 编程 int 详解 Student new

在本页中,我们将了解 Java 对象和类。在面向对象的编程技术中,我们使用对象和类来设计程序。

Java中的对象既是物理实体又是逻辑实体,而Java中的类只是逻辑实体。

什么是Java中的对象

具有状态和行为的实体称为对象,例如椅子、自行车、记号笔、笔、桌子、汽车等。它可以是物理的或逻辑的(有形的和无形的)。无形对象的例子是银行系统。

一个对象具有三个特征:

  • 属性:表示对象的数据(值)。
  • 方法:表示一个对象的方法(功能),如存款、取款等。
  • 身份:对象身份通常通过唯一 ID 实现。ID 的值对外部用户不可见。但是,JVM 在内部使用它来唯一地标识每个对象。

例如,Pen 是一个对象。它的名字叫雷诺兹;颜色为白色,称为它的状态。它是用来写的,所以写就是它的行为。

对象是类的实例。类是创建对象的模板或蓝图。因此,对象是类的实例(结果)。

对象定义:

  • 对象是现实世界中的实体。
  • 对象是运行时实体。
  • 对象是具有状态和行为的实体。
  • 该对象是一个类的实例。

Java中的类是什么

类是一组具有共同属性的对象。它是创建对象的模板或蓝图。它是一个逻辑实体。它不可能是物理的。

Java 中的类可以包含:

  • 字段
  • 方法
  • 构造器
  • 嵌套类和接口

声明类的语法:


class <class_name>{  
    field;  
    method;  
}  

Java 中的实例变量

在类内部但在方法外部创建的变量称为实例变量。实例变量在编译时不获取内存。它在创建对象或实例时在运行时获取内存。这就是为什么它被称为实例变量。

Java 中的方法

在 Java 中,方法就像一个函数,用于公开对象的行为。

方法优势

  • 代码重用性
  • 代码优化

Java中的新关键字

new 关键字用于在运行时分配内存。所有对象都在堆内存区域中获得内存。

对象和类示例:类中的 main

在这个例子中,我们创建了一个 Student 类,它有两个数据成员 id 和 name。我们正在通过 new 关键字创建 Student 类的对象并打印对象的值。

在这里,我们在类中创建一个 main() 方法。

文件:Student.java


//Java程序来说明如何定义一个类和字段 
//定义一个学生类  
class Student{  
 //定义字段  
 int id;//字段或数据成员或实例变量  
 //在Student类中创建main方法 
 public static void main(String args[]){  
  //创建对象或实例 
  Student s1=new Student();//创建学生对象 
  //打印对象的值 
  System.out.println(s1.id);//通过引用变量访问成员 
  System.out.println(s1.name);  
 }  
}  

输出:

0
null

对象和类示例:类外的main

在实时开发中,我们创建类并从另一个类中使用它。这是一种比以前更好的方法。

让我们看一个简单的例子,我们在另一个类中有 main() 方法。

我们可以在不同的 Java 文件或单个 Java 文件中有多个类。如果在单个 Java 源文件中定义多个类,最好使用具有 main() 方法的类名来保存文件名。

文件:TestStudent1.java


//Java 程序来演示在其中有 main 方法  
//另一个类 
//创建学生类
class Student{  
 int id;  
 String name;  
}  
//创建另一个包含主要方法的类TestStudent1 
class TestStudent1{  
 public static void main(String args[]){  
  Student s1=new Student();  
  System.out.println(s1.id);  
  System.out.println(s1.name);  
 }  
}  

输出:

0
null

3种初始化对象的方法

在 Java 中有 3 种初始化对象的方法。

  • 通过引用变量
  • 按方法
  • 通过构造函数

1)对象和类示例:通过引用初始化

初始化对象意味着将数据存储到对象中。让我们看一个简单的例子,我们将通过引用变量初始化对象。

文件:TestStudent2.java


class Student{  
 int id;  
 String name;  
}
class TestStudent2{  
 public static void main(String args[]){  
  Student s1=new Student();  
  s1.id=101;  
  s1.name="小明";  
  System.out.println(s1.id+" "+s1.name);//用空格打印成员
 }  
}  

输出:

101 小明

我们还可以创建多个对象,并通过引用变量将信息存储在其中。

文件:TestStudent3.java


class Student{  
 int id;  
 String name;  
}  
class TestStudent3{  
 public static void main(String args[]){  
  //创建对象  
  Student s1=new Student();  
  Student s2=new Student();  
  //初始化对象  
  s1.id=101;  
  s1.name="小明";  
  s2.id=102;  
  s2.name="小华";  
  //Printing data  
  System.out.println(s1.id+" "+s1.name);  
  System.out.println(s2.id+" "+s2.name);  
 }  
}  

输出:

101 小明
102 小华

2)对象和类示例:通过方法初始化

在此示例中,我们创建了 Student 类的两个对象,并通过调用 insertRecord 方法将值初始化为这些对象。在这里,我们通过调用 displayInformation() 方法来显示对象的状态(数据)。

文件:TestStudent4.java


class Student{  
 int rollno;  
 String name;  
 void insertRecord(int r, String n){  
  rollno=r;  
  name=n;  
 }  
 void displayInformation(){System.out.println(rollno+" "+name);}  
}  
class TestStudent4{  
 public static void main(String args[]){  
  Student s1=new Student();  
  Student s2=new Student();  
  s1.insertRecord(111,"小可");  
  s2.insertRecord(222,"小艾");  
  s1.displayInformation();  
  s2.displayInformation();  
 }  
}  

输出:

111 小可
222 小艾

在这里插入图片描述
上图可以看到,object获取的是堆内存区的内存。引用变量是指分配在堆内存区的对象。这里,s1 和 s2 都是引用变量,引用内存中分配的对象。

3) 对象和类示例:通过构造函数初始化

稍后我们将学习 Java 中的构造函数。

对象和类示例:员工

让我们看一个维护员工记录的例子。

文件:TestEmployee.java

class Employee{  
    int id;  
    String name;  
    float salary;  
    void insert(int i, String n, float s) {  
        id=i;  
        name=n;  
        salary=s;  
    }  
    void display(){System.out.println(id+" "+name+" "+salary);}  
}  
public class TestEmployee {  
public static void main(String[] args) {  
    Employee e1=new Employee();  
    Employee e2=new Employee();  
    Employee e3=new Employee();  
    e1.insert(101,"A",45000);  
    e2.insert(102,"B",25000);  
    e3.insert(103,"C",55000);  
    e1.display();  
    e2.display();  
    e3.display();  
}  
}  

输出:

101 A 45000.0
102 B 25000.0
103 C 55000.0

对象和类示例:矩形

给出了另一个维护 Rectangle 类记录的例子。

文件:TestRectangle1.java


class Rectangle{  
 int length;  
 int width;  
 void insert(int l, int w){  
  length=l;  
  width=w;  
 }  
 void calculateArea(){System.out.println(length*width);}  
}  
class TestRectangle1{  
 public static void main(String args[]){  
  Rectangle r1=new Rectangle();  
  Rectangle r2=new Rectangle();  
  r1.insert(11,5);  
  r2.insert(3,15);  
  r1.calculateArea();  
  r2.calculateArea();  
}  
}  

输出:

55
45

在 Java 中创建对象有哪些不同的方法?

java中创建对象的方法有很多种。他们是:

  • 按新关键字
  • 通过 newInstance() 方法
  • 通过 clone() 方法
  • 通过反序列化
  • 通过工厂方法等

稍后我们将学习这些创建对象的方法。

匿名对象

匿名只是意味着无名。没有引用的对象称为匿名对象。它只能在创建对象时使用。

如果您只需要使用一个对象一次,那么匿名对象是一个很好的方法。例如:


new Calculation();//匿名对象

通过引用调用方法:

Calculation c=new Calculation();
c.fact(5)

通过匿名对象调用方法


new Calculation().fact(5);  

让我们看看 Java 中匿名对象的完整示例。


class Calculation{  
 void fact(int  n){  
  int fact=1;  
  for(int i=1;i<=n;i++){  
   fact=fact*i;  
  }  
 System.out.println("阶乘为 "+fact);  
}  
public static void main(String args[]){  
 new Calculation().fact(5);//使用匿名对象调用方法 
}  
}  

输出:

阶乘为 120

仅按一种类型创建多个对象

我们只能通过一种类型创建多个对象,就像我们在基元的情况下所做的那样。

原始变量的初始化:


int a=10, b=20;

引用变量的初始化:

1、矩形 r1= new Rectangle(), r2= new Rectangle(); //创建两个对象


Rectangle r1=new Rectangle(), r2=new Rectangle();//创建两个对象

让我们看看这个例子:


//Java程序来说明其中Rectangle类的使用 
//有长度和宽度数据成员 
class Rectangle{  
 int length;  
 int width;  
 void insert(int l,int w){  
  length=l;  
  width=w;  
 }  
 void calculateArea(){System.out.println(length*width);}  
}  
class TestRectangle2{  
 public static void main(String args[]){  
  Rectangle r1=new Rectangle(),r2=new Rectangle();//创建两个对象 
  r1.insert(11,5);  
  r2.insert(3,15);  
  r1.calculateArea();  
  r2.calculateArea();  
}  
}  

输出:

55
45

真实世界的例子:账户

文件:TestAccount.java


//用于演示银行系统工作的Java程序 
//我们从我们的账户存入和提取金额的地方。 
//创建一个具有 deposit() 和 withdraw() 方法的 Account 类  
class Account{  
int acc_no;  
String name;  
float amount;  
//初始化对象的方法
void insert(int a,String n,float amt){  
acc_no=a;  
name=n;  
amount=amt;  
}  
//存款方法
void deposit(float amt){  
amount=amount+amt;  
System.out.println(amt+" 存入");  
}  
//撤回方法  
void withdraw(float amt){  
if(amount<amt){  
System.out.println("余额不足");  
}else{  
amount=amount-amt;  
System.out.println(amt+" 撤回");  
}  
}  
//查询账户余额的方法
void checkBalance(){System.out.println("余额为: "+amount);}  
//显示对象值的方法   
void display(){System.out.println(acc_no+" "+name+" "+amount);}
}  
//创建一个测试类来存取金额    
class TestAccount{  
public static void main(String[] args){  
Account a1=new Account();  
a1.insert(832345,"小安",1000);  
a1.display();  
a1.checkBalance();  
a1.deposit(40000);  
a1.checkBalance();  
a1.withdraw(15000);  
a1.checkBalance();  
}}   

输出:

832345 小安 1000.0
余额为:1000.0
40000.0 存入
余额为:41000.0
15000.0 撤回
余额为:26000.0

标签:Java,对象,void,编程,int,详解,Student,new
From: https://www.cnblogs.com/xw-01/p/17569673.html

相关文章

  • 原型设计模式java
    原型设计模式(PrototypeDesignPattern)是一种创建型设计模式,它允许我们通过克隆已有对象来创建新的对象,而无需通过实例化类。这种模式有助于提高性能和代码重用,特别是在创建复杂对象时。在Java中,我们可以使用Object类的clone()方法来实现原型设计模式。这个方法在Object类中被声明......
  • Java Netty简介
    Netty和Mina是Java世界非常知名的通讯框架。它们都出自同一个作者,Mina诞生略早,属于Apache基金会,而Netty开始在Jboss名下,后来出来自立门户netty.io(http://netty.io/)。Netty是一个基于JAVANIO类库的异步通信框架,它的架构特点是:异步非阻塞、基于事件驱动、高性能、高可靠性和高可定......
  • Array方法: indexOf、filter、forEach、map、reduce详解
    [array方法:indexof、filter、foreach、map、reduce详解|FEblog](https://007sair.github.io/2015/08/17/js-Extras/#map)ECMAScript5标准新增了几个数组操作的方法,让我们来看看都是什么:Array.prototype.indexOfArray.prototype.lastIndexOfArray.prototype.everyArray.......
  • 字符串加减乘除 java
    字符串加减乘除实现方法概述本文将介绍如何在Java中实现字符串的加减乘除操作。在Java中,字符串是不可变的,因此不能直接对字符串进行加减乘除操作,但可以通过一些方法来实现字符串的加减乘除功能。流程下面是实现字符串加减乘除的流程:步骤描述1创建两个要操作的字符串......
  • 自动化测试代码 java
    自动化测试代码Java实现流程自动化测试在软件开发过程中扮演着重要的角色,它可以帮助我们提高测试效率,并保证软件质量。在Java开发中,我们可以使用一些成熟的框架和工具来实现自动化测试。下面我将介绍一下实现自动化测试代码的流程,并提供相应的代码示例。流程概览下面的表格展......
  • c语言学习详解
    C语言一.C语言概述C语言是一种用于和计算机交流的高级语言,它既具有高级语言的特点,又具有汇编语言的特点非常接近自然语言程序的执行效率非常高C语言是所有编程语言中的经典,很多高级语言都是从C语言中衍生出来的,例如:C++、C#、Object-C、Java、Go等等C语言是所有编程语言......
  • 抓取网页图片上的文字javascript
    抓取网页图片上的文字流程以下是实现“抓取网页图片上的文字”所需要的步骤和代码示例:步骤做什么代码示例1安装必要的库和工具2下载网页图片3图片预处理4使用OCR技术抓取文字步骤1:安装必要的库和工具在进行文字抓取前,首先需要安装几个必要的库和......
  • Unity 网络编程-正确收发数据流
    1.TCP数据流我们知道在使用Socket网络程序时,操作系统会将数据存到发送接收缓存中。程序不能直接操作它们,只能通过socket.Receive,socket.Send等方法来间接操作。在使用以上方法时,如果接收缓存为空,那Receive方法会阻塞。如果发送缓存满了则Send方法会阻塞。粘包半......
  • 指定ip请求java api
    实现"指定IP请求JavaAPI"的步骤作为一名经验丰富的开发者,我将向你介绍如何实现"指定IP请求JavaAPI"的方法。下面是整个流程的步骤:步骤描述1.获取APIURL2.创建HttpURLConnection对象3.设置请求方法4.设置请求头部5.设置请求参数6.发送请求7.......
  • Factor语言编程示例
    目录语言简介示例语言简介https://rosettacode.org/wiki/Category:FactorFactor是一种基于堆栈的、串联的通用编程语言,注重实用性。Factor最初由SlavaPestov开发,于2003年作为一种为游戏编写的脚本语言诞生。该实现最初是用Java编写的解释器,但后来获得了优化编译器,并使......