java编程语言学习(一)

类的构成

类是由成员变量(也称为“属性”)和成员方法(也称为“行为”)构成的。

类中不能有其他语句,语句必须放在成员方法中。

类和对象有什么区别呢?
-类是抽象的概念,仅仅是模板,比如说:“人”
-对象(类的实例)是一个你能够看得到、摸得着的具体实体,比如:“小布什”

一、方法

在Java中,类方法(也称为静态方法)是使用static关键字修饰的方法。它们与类本身相关联,而不是与类的实例相关联。在类加载的时候,类方法就已经存在,可以直接通过类名调用,无需实例化对象。类方法通常用于执行与类相关的操作,例如工具类中的一些公共方法,或者用于返回特定类的实例。

类方法中不能使用this关键词。

this关键字在Java中用于引用当前对象的实例,但静态方法是与类关联的,而不是与类的任何特定实例关联的。

当你尝试在静态方法中使用this关键字时,编译器会报错,因为它不知道this应该引用哪个实例,因为静态方法可以在没有创建类的任何实例的情况下被调用。

除了类方法之外,Java中还有其他类型的方法,主要包括:

  • 实例方法(Instance Method):实例方法属于类的实例,可以访问类的实例变量和实例方法。在方法内部可以使用关键字this来引用当前对象。实例方法可以通过对象来调用。也称对象方法。
  • 抽象方法(Abstract Method):抽象方法是一种仅有方法头,而没有具体的方法体和操作实现的方法。使用抽象方法的目的是使所有的子类,对外都呈现一个相同名字的方法,是一个统一的接口。所有的抽象方法,都必须存在于抽象类之中。
  • 最终方法(Final Method):用final修饰符修饰的类方法。这样的方法不能被覆盖,即子类不能重写该方法。

final 变量-----常量

final 方法----不能被重写

final 类---- 不能被继承

  • 本地方法(Native Method):用native修饰符声明其他语言书写方法体并具体实现方法功能的特殊的方法。由于native的方法的方法体使用其他语言在程序外部写成,所以所有的native方法都没有方法体,而用一个分号代替。
  • 同步方法(Synchronized Method):如果synchronized修饰的方法是一个类的方法(即static的方法),那么在被调用执行前,将把系统类Class中对应当前类的对象加锁。这通常用于多线程编程中,以确保同一时间只有一个线程可以执行某个方法。

注意

在静态方法中不能调用实例方法;在实例方法中可以调用静态方法,也可以调用实例方法。

在Java中,"在静态方法中不能调用实例方法" 这句话的意思是,你不能直接在静态方法内部调用一个非静态(即实例)方法,除非你先创建了一个类的实例(对象),并通过这个实例来调用该方法。这是因为静态方法和实例方法在几个关键方面有所不同:

  1. 加载时机:静态方法是属于类的,而不是属于类的任何特定实例。它们在类被加载到JVM(Java虚拟机)时就已经准备好了,这通常是在创建类的第一个实例之前。而实例方法是属于类的实例(对象)的,它们需要类的实例被创建之后才能被调用。

  2. 访问级别:静态方法可以直接访问静态变量和静态方法(因为它们都属于类),但不能直接访问实例变量和实例方法(因为它们属于类的实例)。相反,实例方法可以访问静态变量、静态方法、实例变量和实例方法(因为它们都有对类的实例的访问权限)。

  3. this引用:在实例方法中,this关键字引用的是当前实例(对象)。然而,在静态方法中,this关键字是不可用的,因为静态方法不依赖于任何特定的实例。

  4. 调用方式:静态方法可以直接通过类名来调用,而不需要创建类的实例。实例方法则需要先创建类的实例,然后通过这个实例来调用。

由于这些差异,如果你在静态方法中直接调用一个实例方法,编译器会报错,因为它不知道应该使用哪个实例(对象)来调用这个方法。要解决这个问题,你需要在静态方法中创建一个类的实例,并通过这个实例来调用实例方法。但是,这通常不是一个好的设计选择,因为它违反了静态方法的初衷——即提供不依赖于任何特定实例的功能。

例如,以下代码会导致编译错误:

public class MyClass {  
    public void instanceMethod() {  
        // 实例方法  
    }  
  
    public static void staticMethod() {  
        instanceMethod(); // 错误:不能在静态上下文中引用非静态方法 instanceMethod()  
    }  
}

要修复这个错误,你需要在staticMethod中创建一个MyClass的实例,并通过这个实例来调用instanceMethod

public class MyClass {  
    public void instanceMethod() {  
        // 实例方法  
    }  
  
    public static void staticMethod() {  
        MyClass obj = new MyClass(); // 创建类的实例  
        obj.instanceMethod(); // 通过实例调用实例方法  
    }  
}

二、属性(成员变量)

在Java中,属性(通常称为字段或成员变量)是类的一部分,用于存储与类的实例或类本身相关联的数据。这些属性可以是任何有效的Java数据类型,包括基本数据类型(如intdoubleboolean等)或引用类型(如其他类的实例、数组等)。

成员变量可以分为2种——实例变量和静态变量。

静态变量(类变量)(牢记)

如果一个成员变量定义时带有static关键字,则为“静态变量”

例如:static String name; //定义静态变量

使用时可以直接通过类去访问

例如Dog.name="大黄" ; //使用

基本数据类型

Java的基本数据类型包括:

  • byte:8位有符号二进制整数
  • short:16位有符号二进制整数
  • int:32位有符号二进制整数
  • long:64位有符号二进制整数
  • float:单精度32位IEEE 754浮点数
  • double:双精度64位IEEE 754浮点数
  • char:16位Unicode字符
  • boolean:true或false

引用类型

引用类型包括:

  • 类(Class Types):如StringInteger等,或者是你自己定义的类。
  • 接口(Interface Types):定义了一组方法的契约,但不包含方法的实现。
  • 数组(Array Types):可以存储相同类型元素的集合。
  • 枚举(Enumeration Types):Java 5.0引入的一种新的类型,允许用类型安全的枚举常量来代替整数常量。

属性的修饰符

属性(字段)可以使用以下修饰符:

  • public:表示该属性可以从任何其他类访问。
  • private:表示该属性只能在其所在的类中被访问。
  • protected:表示该属性可以被其所在类、同一包中的其他类以及子类访问。
  • static:表示该属性是类属性,而不是实例属性。它可以通过类名直接访问,而不需要创建类的实例。
  • final:表示该属性的值一旦被初始化后就不能再改变。
  • transient:表示该属性不需要被序列化。这通常在将对象保存到持久存储(如文件或数据库)时使用。
  • volatile:表示该属性可能会被并发地修改,编译器和处理器需要强制从主内存中读写该属性的值。这通常用于多线程编程中。
注意
  • 只有public修饰符可以修饰类
  • private、protected和public修饰符可以修饰成员变量,也可以修饰成员方法。主要用于控制成员变量或成员方法的访问权限。当然,成员变量和成员方法也可以没有修饰符。
访问权限

代码示例:

public class Person {  
    // 私有实例属性  
    private String name;  
    private int age;  
  
    // 公共静态属性(也称为类属性)  
    public static String companyName = "ACME Corp";  
  
    // 构造器  
    public Person(String name, int age) {  
        this.name = name;  
        this.age = age;  
    }  
  
    // getter和setter方法  
    public String getName() {  
        return name;  
    }  
  
    public void setName(String name) {  
        this.name = name;  
    }  
  
    public int getAge() {  
        return age;  
    }  
  
    public void setAge(int age) {  
        this.age = age;  
    }  
  
    // 一个静态方法,可以通过类名直接调用  
    public static void printCompanyName() {  
        System.out.println(companyName);  
    }  
}

三、

  • 28
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习Java编程语言的方法有很多种,以下是一些建议: 1. 学习基本概念:首先,你需要了解Java的基本概念,例如面向对象编程、变量、数据类型、控制流程等。可以通过阅读Java编程的教材或者参考资料来学习这些基本概念。 2. 编写代码:学习编程语言最重要的一点就是实践。尝试编写一些简单的Java程序,例如打印Hello World、计算两个数的和等。通过实践来加深对Java语法和概念的理解。 3. 学习工具和环境:了解并学习使用Java的开发工具和环境,例如Eclipse、IntelliJ IDEA等。这些工具可以帮助你更高效地编写和调试Java程序。 4. 学习API文档:Java提供了丰富的类库和API,学习如何使用这些API可以帮助你更快地开发Java程序。阅读Java官方文档或者其他相关的API文档可以帮助你了解这些API的用法和功能。 5. 参与项目或实践:参与实际的Java项目或者练习可以帮助你将所学的知识应用到实际中。可以尝试解决一些实际的问题或者参与开源项目来提升自己的编程能力。 6. 学习并发编程Java是一门支持并发编程语言学习并发编程可以帮助你编写高效的多线程程序。可以阅读相关的书籍或者教程来学习Java的并发编程。 7. 参加培训或课程:如果你想系统地学习Java编程语言,可以考虑参加一些培训或者课程。这些培训或者课程可以提供结构化的学习内容和指导,帮助你更快地掌握Java编程

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值