热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java基础_大数据JAVA基础第九天

篇首语:本文由编程笔记#小编为大家整理,主要介绍了大数据JAVA基础第九天相关的知识,希望对你有一定的参考价值。1.JavaBean的特点:

篇首语:本文由编程笔记#小编为大家整理,主要介绍了大数据JAVA基础第九天相关的知识,希望对你有一定的参考价值。


1.JavaBean的特点:



  • private 成员属性

  • public成员方法

  • 有get/set方法对成员变量进行赋值/取值

  • 有空构造方法

符合这些条件的称为标准的JavaBean。

2.构造方法(也叫构造器)

构造方法(也叫构造器)是一种特殊的方法,定义的位置是在类中,成员方法外,和成员变量,成员方法是平级关系,定义构造方法和定义一般的成员方法很像,它的特点是与类同名,但是没有返回值,其语法格式如下:

 

[修饰符] 构造方法名(形参列表){

    //零到多条可执行语句组成构造方法的执行体

3.构造方法定义时注意事项:

1.构造方法必须和类同名

2.构造方法没有返回值,也不能使用void,一旦加了返回值或者void,那么这个方法就是一个成员方法,而不是构造方法了

4.默认的构造方法

当定义一个类的时候,如果没有显式的定义任何构造方法,就像之前的例子,都没有定义构造方法,这时,系统会给这个类加上一个默认的无参构造方法,并且构造方法里没有任何语句。

例如:

class Demo{

    //public Demo(){}

    //如果没有定义任何构造方法的话,系统自动加上一个空参构造方法

    public void show(){

       System.out.println("hello world");

    }

}

 

一旦有自定义构造方法,系统就不会加上任何构造方法了

class Demo{

    public Demo(int id){

       System.out.println("这是有一个参数的构造方法");

    }

}

5.构造方法的使用

实际上,在程序中使用new关键字创建一个类的实例化对象的时候,就是去调用该类的相应的构造方法,

此时应注意,根据构造方法的形参列表的不同来调用不同的构造方法,调用不存在的构造方法肯定编译报错

6.this关键字

this关键字用来指向当前对象,根据this关键字出现的位置不同,this作为对象的引用有两种情况:



  • 在构造方法中引用该构造方法正在初始化的对象

  • 在方法中引用正在调用该方法的对象

this关键字的使用场景之一,就是让类中的一个方法去访问类中的另一个实例方法或变量,例如,定义了一个Person类,其中定义了两个方法,一个叫sayHi()方法,另一个speak()方法,在speak()方法中需要先调用sayHi()方法,该如何定义Person类?

看下面的示例代码:

class Person{

    public Person(){}

    //打招呼方法

    public void sayHi(){

       System.out.println("Hello");

    }

    //谈话方法

    public void speak(String content){

       //想要使用到Person类的sayHi方法,先创建一个对象,然后再调用这个对象的实例方法

       Person p = new Person();

       p.sayHi();

       System.out.println("我想说的是:" + content);

    }

}

 

class PersonTest{

    public static void main(String[] args){

       Person per = new Person();

       per.speak();

    }

}

7.在测试类中首先实例化一个Person对象per,然后调用这个对象的speak方法,但是在这个方法被调用的时候,

又创建了一个Person对象p,然后调用了对象p的sayHi方法,所以,在程序运行的过程中,实际上是产生了两个Person实例对象。

 这个程序可以实现方法的调用,但是这样做好么?程序在speak方法里创建的Person对象目的其实很简单,就是为了调用一次这个对象的sayHi方法。

8.static关键字

 

static 关键字的字面直译是“静态的”,实际上这个说法十分模糊,根本无法说明static的真正作用。

static的真正作用就是用于区分成员变量,方法,内部类,初始化块(后面讲)这四种成员是属于类本身还是属于这个类的实例。

在类定义中,static相当于一个标志,有static修饰的成员属于类本身,没有static修饰的成员属于该类的实例对象。

所以,为了区分这两种不同的成员变量,凡是有static修饰的成员变量/成员方法,称为类变量/类方法,没有static修饰的成员变量/成员方法称为实例变量/实例方法

下图为Java中变量的分类图:

                             技术分享

9.static修饰类的成员变量和成员方法(即:类变量,类方法)

静态成员变量(类变量)属于类,可用类名或对象名两种方式进行访问

静态成员方法(类方法)属于类,可用类名或对象名两种方式进行访问

 

只要类存在,程序中就可以访问到类变量,类变量访问的语法

类名.类变量 Student.name

只要实例存在,程序中就可以访问到该实例的实例变量,访问实例变量的语法

实例名.实例变量 s.id

当然,类变量也可以通过该类的实例来访问,通过实例访问类变量的语法

实例名.类变量 Student.name/s.name

10.static关键字的特点

被static关键字修饰的部分,有如下特点



  • 随着类的加载而加载

  • 优先于对象存在(因为类的加载优先于对象的创建)

  • 被类的所有实例对象共享(存在于方法区中的静态区,如果是一个类变量的话,任何一个对象对该变量进行修改,都会在其他对象中得到体现),这也是我们在定义一个类时,判断是否使用静态关键字的标准

  • 可以通过类名访问(类名.静态变量名/类名.静态方法名),也可以使用对象名来访问,推荐使用类名调用,因为静态变量/方法是属于类的

11.什么时候使用static关键字?使用static关键字的标准

当一个变量或者方法属于一个类,而不是属于这个类的实例对象时,就可以使用static来修饰,这样就可以使用类名.成员(变量/方法)的方式访问这个static变量/方法。

所有这个类的实例对象都能看到对静态变量(类变量)的更改

12.static方法重点注意事项



  • 静态方法(类方法)中不能使用this关键字,this关键字代表的是当前对象的引用,但是static关键字修饰的方法是属于类的,随着类的加载而存在,但当类进行加载时,此时实例对象还没有被创建出来,这时是无法使用this关键字的

  • 静态方法只能访问静态成员变量和静态成员方法

13.static内存图

被static修饰的变量或者方法存在方法区中的静态区

技术分享

14.static关键字注意事项

static关键字注意事项

    A:在静态方法中不能使用this关键字

      如何理解呢?

       静态是随着类的加载而加载,this是随着对象的创建而存在。

       由于类比对象优先存在,所以静态比对象先存在。

    B:静态方法只能访问静态的成员变量和静态的成员方法

       静态方法访问的是:

       成员变量:只能访问静态变量

       成员方法:只能访问静态成员方法

       非静态方法访问的是:

           成员变量:可以是静态的(因为类已经加载了,成员方法当然可以调用),也可以是非静态的

           成员方法:可是是静态的成员方法(因为类已经加载了),也可以是非静态的成员方法。

    简单记:

       静态只能访问静态。

15.静态变量和实例变量的区别

所属不同



  • 静态变量属于类,所以也称为为类变量

  • 实例变量属于实例对象,所以也称为实例变量

内存中位置不同



  • 静态变量存储于方法区中的静态区

  • 实例变量存储于堆内存

在内存出现的时间不同



  • 静态变量随着类的加载而加载,随着类的消失而消失

  • 实例变量随着对象的创建而存在,随着对象的消失而消失

调用方式不同



  • 静态变量可以通过类名调用,也可以通过对象调用

  • 实例变量只能通过对象名调用


























 


所属


内存位置


出现时间


调用


静态变量



方法区的静态区


随类加载而加载


类名调用,对象名调用


实例变量


对象


堆内存


随对象创建而存在


对象名调用


16.实例变量和局部变量的区别

在类中的位置不同

实例变量 在类中,并且在方法外

局部变量 方法内或者方法声明上(形参)

在内存中的位置不同

实例变量 堆内存

局部变量 栈内

生命周期不同

实例变量 随着对象的存在而存在,随着对象的消失而消失

局部变量 随着方法的调用而存在,随着方法的调用完毕而消失

初始化值不同

实例变量 有默认的初始化值

局部变量 没有默认的初始化值,必须先定义,赋值,才能使用。

 


























 


声明位置


内存位置


生命周期


初始值


局部变量


方法内,形参上


栈内存


随方法调用而存在


必须先定义,赋值再使用


实例变量


类内,方法外


堆内存


随对象创建而存在


有默认初始值


17.   main方法是静态的

public static void main(String[] args) {}

  public 被jvm调用,访问权限足够大。

  static 被jvm调用,不用创建对象,直接类名访问

  void被jvm调用,不需要给jvm返回值

  main 一个通用的名称,虽然不是关键字,但是被jvm识别

  String[] args 以前用于接收键盘录入的

18.main方法的格式讲解:

       public static void main(String[] args) {...}

      

       public:公共的,访问权限是最大的。由于main方法是被jvm调用,所以权限要够大。

       static:静态的,不需要创建对象,通过类名就可以。方便jvm的调用。

       void:因为我们曾经说过,方法的返回值是返回给调用者,而main方法是被jvm调用。返回内容给jvm没有意义。

       main:是一个常见的方法入口。我见过的语言都是以main作为入口。

       String[] args:这是一个字符串数组。

           这个东西为了接收键盘录入的数据的。

           格式是:

              java MainDemo hello world java

19.如何使用API文档

点击显示,找到索引,看到输入框

以Scanner举例

在输入框里面输入Scanner,然后回车

看包

    java.lang包下的类不需要导入,其他的全部需要导入。

    要导入:

    import java.util.Scanner;

再简单的看看类的解释和说明

看类的结构

    成员变量   字段摘要  

    构造方法   构造方法摘要

    成员方法   方法摘要

学习构造方法  

    A:有构造方法   就创建对象

    B:没有构造方法 成员可能都是静态的,这样的类也不需要构造方法,直接用类名就行

看成员方法

    A:左边

       是否静态:如果静态,可以通过类名调用

       返回值类型:人家返回什么,你就用什么接收。

    B:右边

       看方法名:方法名称不要写错

       参数列表:人家要什么,你就给什么;人家要几个,你就给几个

 


推荐阅读
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文介绍了在多平台下进行条件编译的必要性,以及具体的实现方法。通过示例代码展示了如何使用条件编译来实现不同平台的功能。最后总结了只要接口相同,不同平台下的编译运行结果也会相同。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
author-avatar
美丽容颜L_738
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有