【Java】面向对象基础一(Java的类和对象、静态数据成员和方法,包)

目录

一、面向对象的三大特点

二、Java的类和对象

1.类

2.对象

①Java的引用

②对象的调用和使用规则

3.类和对象的关系

4.JVM的内存分配

5.类的构造方法

6.this引用

7.静态数据成员

8.静态方法

9.对象变量的传递

三、包(package)

1.包的命名

2.把类加入包中

3.使用包


一、面向对象的三大特点

继承、多态、封装

二、Java的类和对象

Java是一门纯面向对象的语言

1.类

是具有共同属性的一系列对象的描述,由属性(类的属性)和方法(类的操作)组成。相当于建立的一个特殊的数据类型。

2.对象

就是静态属性(属性、数据成员、成员变量)和动态方法(方法和方法成员)的封装体。

①Java的引用

除了基本数据类型以为其他的变量类型都是引用类型,存放在栈(stack)内存区。

②对象的调用和使用规则

使用new方法创建对象,都存放在堆(heap)内存区;对象变量.成员变量 :访问对象的成员变量;对象变量.方法:调用对象的方法。

3.类和对象的关系

类的对象的定义,对象是类的实例,类似于int a,int就相当于类,a相当于对象,int是对a的i定义,a是int类型的一个实例。

4.JVM的内存分配

注意:

※同一个类的每一个对象占用不同成员变量的存储空间。

※引用类型变量存放再栈内存中。

※对象通过new产生,位于对内存,类的每一个成员变量在不同的对象中有不用的值,除了静态变量以外,静态变量在所有的类内的值都是相同的。

※方法仅存一份,存放在代码区,执行时再分配内存。同一个类的每一个对象共享这一份代码。

※Java具有自己的垃圾回收机制,通过垃圾回收器,释放由new分配的内存。

5.类的构造方法

使用构造函数,也就是初始化对象,构造函数的名字必须和类名相同且不能指明返回值类型(void也不可以)。用户不可以直接调用构造函数必须使用new方法,可以通过传入的参数不同来实现构造函数重载,也是对象多态的体现,在创建对象的时候Java会自动调用构造方法对新对象进行初始化。当且仅当不提供构造方法的时候,编辑器默认构造方法。

注意:

※类可以没有显性构造函数,当不提供构造方法的时候,编译器为提供默认构造方法,在创建对象的时候,JAVA语言会自动调用构造方法为新对象初始化。

※构造方法是对对象初始化的方法,所以没有返回类型,也不可以用void来声明

※用户不能直接调用构造函数,只能通过new操作调用。

※构造方法必须与类名相同。

※一个类可以创建多个构造方法,但必须具有不同的参数,这是对象多态性的体现,可以利用不同参数调用不同构造方法,实现对象的不同初始值,构造方法的这种多个方法共享相同名字的特性叫做重载。

默认构造方法对成员的初始化:

构造和初始化对象顺序:

new初始化对象的顺序

1、申请内存空间,为新对象分配空间并初始化,所有基本类型数据设置成默认值。

2、执行显性初始化

3、执行构造方法

4、对该对象的引用赋值给引用变量。

6.this引用

当局部变量和成员变量的名字相同时候,成员变量就会被隐藏,这时如果想在成员方法中使用成员变量,则必须使用关键字this。this就是帮助你找到你想要的成员变量上课举出这个例子就很好理解:

public class Fruit{
   public String color=“绿色”;                                 //定义颜色成员变量
   public  void harvest(){                                   //定义收获的方法
           String color=“红色”;                                //定义颜色局部变量
           System out println(“水果是:”+color+“的!”);
           System out println(“水果原来:”+this.color+“的!”};}//这里在访问成员变量color
   public static void main(String[] args){
           Fruit f=new Fruit();
           f.harvest();      }      
}

7.静态数据成员

类的所有对象共有的一个属性,通过static定义,仅在(data segment)数据区存一份,所有对象共享。

8.静态方法

对类自身进行操作,只能出现静态数据成员和其他静态方法

注意:静态方法和静态数据成员都可以直接通过类访问也可以通过对象访问。

9.对象变量的传递

基本数据类型:按照值的传递和使用。

对象数据类型:按照引用得传递和使用。

注意:

※通过对象变量使用对象(引用地址)。

※对象变量不等于变量本身,对象变量使用前要初始化。

※对象变量为空是为null,判断一个引用是否指向一个对象:if(a!=null),判断两个引用是否指向同一个变量:if(a==b),判断两个对象得值是否相等:a.equals(b).

三、包(package)

将类剧集起来可以组成一个包(可以理解成是一个文件夹),方便组织代码,解决命名冲突得问题,比如说同一个名称得类可以在不同的包中存在,也不会存在冲突问题,标准Java库类包:java.lang、java.util、java.net。

1.包的命名

域名的倒写

2.把类加入包中

包的名字放在源文件的顶部,除了注释外的第一句(其实就是说明要加入包的位置),包中编译后的class文件存放在与完整包名匹配的子目录中。

注意:

※编译时不会自动检查包路径的正确性。

※执行时要写类的全称(在命令提示符执行时)。

3.使用包

类可以使用所在包的所有类。

类可以使用其他包的public类,可以(import)先导入包,再使用public类,也可以直接写出完整包名使用public类。

注意:

※java.lang包中的类不用import可以直接使用。

※声明类所属的包,包名字要放在源文件的顶部。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java可以通过使用AISParser库来解析静态AIS(Automatic Identification System)原始数据。AIS是一种船舶自动识别系统,它通过无线电信号传输船舶位置、速度、航向等信息,用于船舶交通管理和海上安全。 在Java中解析静态AIS原始数据,首先需要导入AISParser库。然后,我们需要读取AIS原始数据文件或从网络中接收AIS数据流。接下来,使用AISParser提供的方法将原始数据转换为可读的AIS消息。 AISParser库提供了一些常用的方法来解析AIS原始数据。例如,可以使用parse方法将原始数据解析为AIS消息对象。该方法接收原始数据作为参数,并返回一个含解析后AIS消息的对象。 解析后的AIS消息对象可以获取各种信息,例如船舶的MMSI(Maritime Mobile Service Identity)、呼号、船名、船长、船宽等。可以使用AIS消息对象的getter方法获取这些信息。 解析静态AIS原始数据的过程如下: 1. 导入AISParser库。 2. 读取AIS原始数据文件或接收AIS数据流。 3. 使用AISParser的parse方法解析原始数据为AIS消息对象。 4. 获取AIS消息对象的各种信息。 例如,我们可以通过以下代码片段来解析静态AIS原始数据: ``` import com.aisparser.AisInputStream; import com.aisparser.AisMessage; import com.aisparser.AisMessageException; import com.aisparser.MessageException; import com.aisparser.Vdm; import com.aisparser.Itdma; ... AisInputStream inputStream = new AisInputStream(); ... try { while (true) { // 从数据流中读取AIS原始数据 String rawMessage = inputStream.readMessage(); // 解析原始数据为AIS消息对象 Vdm vdm = new Vdm(); if (vdm.parse(rawMessage) != 0) { throw new MessageException("Error parsing raw message"); } AisMessage aisMessage = AisMessage.getInstance(vdm); // 获取AIS消息对象的信息 int mmsi = aisMessage.getUserId(); String callSign = aisMessage.getCallSign(); String shipName = aisMessage.getShipName(); double shipLength = aisMessage.getLength(); double shipWidth = aisMessage.getWidth(); // 输出船舶信息 System.out.println("MMSI: " + mmsi); System.out.println("Call Sign: " + callSign); System.out.println("Ship Name: " + shipName); System.out.println("Ship Length: " + shipLength); System.out.println("Ship Width: " + shipWidth); // 进一步处理AIS消息对象... } } catch (AisMessageException e) { e.printStackTrace(); } finally { inputStream.close(); } ``` 通过上述代码,我们可以解析静态AIS原始数据并获取船舶的各种信息。这样可以对AIS数据进行分析、存储或进一步处理,从而实现对船舶交通和海上安全的管理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值