精华内容
下载资源
问答
  • Java类组成

    千次阅读 2019-04-15 00:21:11
    类由什么成分组成?定义语法格式可分为成员变量局部变量可分为:方法构造器==注意:== 静态变量以及非静态变量的区别请说出作用域public,private,protected,以及不写时的区别 是什么? 是具有相同特性...

    类是什么?

    类是具有相同特性和行为的对象集合。
    

    eg:
    人类是一个类

    其中,分为 四大人种:亚洲人种(黄种人)、高加索人种(白种人)、非洲人种(黑种人)、大洋洲人种(棕种人)
    共同特性~~emmmm (坏笑) 当然都是人啦

    至于行为的话,可以是说话,眨眼睛等等。

    类由什么成分组成?

    Java类由五大部分组成:

    • 成员变量/Field域
    • 方法(method)
    • 构造器
    • 代码块
    • 内部类

    定义语法格式

    类:

    [修饰符] class 类名 {….类体	…..}
    eg:public class yun(){} 	
    注意:类的修饰符可以是public、final 或省略这两个。类名只要是合法的标识符即可。
    一个类里可以包含三种最常见的成员:构造器、属性、方法、代码块、内部类。
    

    类可分为

    • 外部类

    • 内部类

      • 静态内部类
      • 非静态内部类
      • 局部内部类

      (1)至于内部类的话,只要A类是在B类里面定义的,那么A便是B的内部类。
      (2)区分的是不是静态类的话,看有没有用staic修饰即可。
      (3)局部内部类:
      如果把一个内部类放在方法里定义,这就是局部内部类,仅仅在这个方法里有效。
      局部内部类不能在外部类以外的地方使用,那么局部内部类也不能使用访部控制符和static修饰

    成员变量

    [修饰符] 属性类型 属性名 [=属性值];
    eg: 	String nam=”yun”;   或  String  name ; 此处默认值为null   后面再给name赋值  name = “落笔”;
    

    此处应有局部变量。那么见名知意,就明白它们的命名规则都一样。不过大家的范围大小不同。

    成员变量指的是在类范围里定义的变量;局部变量指的是在一个方法内定义的变量。
    

    局部变量可分为:

    • 形参
    • 方法局部变量
    • 代码块局部变量.

    ~~emmm此处见名知意吧(坏笑)

    方法

    [修饰符] 方法返回值类型 方法名(形参列表) {….方法体….}
    eg: public static void main(String[] args ){}
    

    方法中的修饰符可以是public ,protected,private,static,final,abstract,其中访问控制符(public ,protected,private)只能出现一个,abstract ,final 只能出现其一.
    返回值类型可以是基本类型和引用类型,如果无返回值,要用void 来声明
    形参列表,可以由零到多个组成,参数之间用逗号(“,”)隔开.
    static 是一个特殊的关键字,译为”静态”,所有有static 修饰的叫类属性,类方法,类成员.

    构造器

    [修饰符] 构造器名(形参列表) {……}
    修饰符可以是public protected private 构造器名字必须和类名相同,形参和方法的形参一样
    

    构造器通常用来new对象。

    注意: 静态变量以及非静态变量的区别

    1. 静态变量可以直接使用类名去调用,当然也可以通过对象去调用。
    2. 非静态变量只能通过对应引用进行调用。
    3. 静态变量不能访问非静态变量。如果,非要去访问的话,那么,只能 用对象去引用非静态成员。
    4. 静态变量在内存空间中只有一份,也永远只有一份。
    5. 非静态变量只要new出一个对象引用就会在内存中分配一份空间给它。
    6. 存放地点不一样,静态变量存放在栈空间。非静态变量存放在堆空间里

    请说出作用域public,private,protected,以及不写时的区别

    这四个作用域的可见范围如下表所示。

    作用域当前类同一包子类全局
    public公开
    protected子类
    default×默认
    private××私有

    类–>包–>子类–>全局 大–>小
    说明:如果在修饰的元素上面没有写任何访问修饰符,则表示default。
    只要记住访问权限由小到大依次是private → default → protected → public,然后再记住Java存在的4个访问范围,就很容易画出上面的表格了。

    展开全文
  • 什么是:具有共同属性与方法的对象的集合 和关键字在词法上区别:是大开头写,关键字小写开头 [修饰符列表] class 类名{ //成员变量 //成员方法 } 成员变量 [修饰符列表] 数据类型 属性名; 1....

    什么是类:具有共同属性与方法的对象的集合

    类和关键字在词法上区别:类是大开头写,关键字小写开头

    [修饰符列表] class 类名{
    	//成员变量
    	//成员方法
    }

     

    成员变量

    [修饰符列表] 数据类型 属性名;

    1.当变量写在类中,就变成了成员变量

    2.成员变量是定义在类中、方法外的

    3.成员变量即为类的属性

    4.如果成员变量只声明而未赋值,那么将会获得默认值

    不同数据类型获得的默认值:

    整数:0
    浮点数:0.0
    字符:'\u000'
    boolean:false
    引用类型:null

     

    成员方法

    [修饰符列表] 返回类型 方法名(形参){};

    1.当方法写在类中,就变成了成员方法

    2.普通方法需要在修饰符加static,而成员方法不加static

    3.成员方法即为类的方法

     

    一张代码截图演示成员变量和成员方法

     

    一个标准的类需要有四个组成部分

    1.所有的成员变量都要使用private关键字修饰

    2.每一个成员变量都需要编写Get、Set方法

    3.编写一个无参数的构造方法

    4.编写一个有参数的构造方法

     

    如何自动生成除第一步以外的其他三步代码

    1.生成Get、Set方法:写好成员变量后,点击菜单栏的Code-Generate-Getter and Setter

    2.生成无参构造方法:写好成员变量后,点击菜单栏的Code-Generate-ConStructor-Selete None

    3.生成有参构造方法:写好成员变量后,点击菜单栏的Code-Generate-Constructor-选择部分参数或全选

    展开全文
  • Java对象的组成部分

    千次阅读 2020-04-09 15:52:30
    每一个对象都对象头、对象的实例数据区和对齐填充字节这三部分组成。 1. 对象头 对象头部分组成: Mark Word:记录对象和锁的有关信息。当一个对象被 synchronized 关键字加锁之后,围绕锁的操作就都会和Mark...

    每一个对象都由对象头、对象的实例数据区和对齐填充字节这三部分组成。

    1. 对象头

    对象头由三部分组成:

    1. Mark Word:记录对象和锁的有关信息。当一个对象被 synchronized 关键字加锁之后,围绕锁的操作就都会和MarkWord有关联。MarkWord通常都是 32 bit位大小。会保存一些分代年龄、无锁状态下对象的HashCode、偏向锁的线程ID、轻量级锁指向栈中锁记录的指针、指向重量级锁的指针、锁的标志位等内容。
    2. 指向类的指针:大小也通常为32bit,它主要指向类的数据,也就是指向方法区中的位置。
    3. 数组长度:只有数组对象才有,在32位或者64位JVM中,长度都是32bit。

    2. 实例数据区

    该区域主要就存放着实例对象的一些字段属性内容。

    3. 对齐填充字节

    由于JVM要求Java对象所占的内存大小应该是8bit的倍数,所以这部分主要就是将对象大小补充为8bit的倍数,没有别的功能。

    展开全文
  • Java虚拟机组成部分及作用

    千次阅读 2018-04-03 18:25:54
    当我们讨论到它的组成部分的时候,有人可能很多都会说是以栈和堆,但是实际上远远不止这部分。 下面我们来讲讲他的组成部分: JVM分为个区域: 一、线程私有区域 包含虚拟机栈(通常称为Java栈)、本地...

    感谢周志明所著的《深入理解Java虚拟机》一书。下面附上了一些我自己的理解。

     

     

    java虚拟机(JVM)

    当我们讨论到它的组成部分的时候,有人可能很多都会说是以栈和堆,但是实际上远远不止这两个部分。

     

    下面我们来讲讲他的组成部分:

    JVM分为两个区域:

    一、线程私有区域

          包含虚拟机栈(通常称为Java栈)、本地方法栈(储存JNI)、程序计数器

    1、虚拟机栈

       对应的就是认为的堆栈的栈,它生命周期与线程相同,描述的是Java内存执行的内存模型:每一个方法在执行的同时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行完成的过程,对应着一个栈帧在虚拟机栈种入栈到出栈的过程。

      局部变量表中存放了编译器可知的各种基本数据类型(boolean、byte、char、short、int、float、double、long的引用和值,方法中的局部变量,执行完成之后就从栈中移除)、对象引用(reference类型,根据具体虚拟机实现,对应的可能是一个指向对象起始地址的引用指针【直接指针】,也可能是指向一个代表对象的句柄或其他与对象相关的位置【句柄池】)和returnAddress类型(指向一条字节码指令的地址)

        其中64位长度的long和double类型数据会占2个局部变量内存空间(Slot),其他的数据类型占用1个。在进入一个方法的时候,这个方法需要在帧中分配多大的局部空间是完全确定的,在方法运行期间不会发生大小更改。

        异常情况:线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError异常;如果虚拟机栈可以动态扩展(当前大多虚拟机可动态扩展),如果扩展时无法申请到足够的内存,就会抛出OutOfMemoryError异常。

     

    2.本地方法栈

        原理基本同虚拟机栈相同,区别在于虚拟机栈是为虚拟机执行java方法服务,而本地方法栈是为虚拟机执行Native方法服务

        异常也会和虚拟机栈一样,会抛出StackOverflowError和OutOfMemoryError。

     

    3.程序计数器

        一块较小的内存空间,是当前线程所执行的字节码的行号指示器。程序计数器负责字节码解释器工作时通过它来选取下一条需要执行的字节码指令,如分支、循环、跳转、异常处理、线程恢复等基础功能。

        多线程时,每个线程都有一个程序计数器,在线程切换的时候确保能准确正确定位到的执行位置,每个线程单独有一个程序计数器,它们之间互不影响,独立存储。

        异常:java虚拟机中唯一一个没有规定OutOfMemoryError异常的区域

     

    二、线程共享区域

         包含方法区、堆

    1.方法区

        各线程共享的区域,方法区存储一杯虚拟机加载的类信息、常量、静态变量、即使编译器遍以后的代码等数据。是堆的一个逻辑部分,别名是Non-Heap(非堆)。

        方法区在以前的虚拟机实现中,被列进了永久代中,由于应用的需求越来越大,方法区也跟着成倍的增加,再加上永久代有内存上限的限制,更容易遇到内存溢出问题,这样将方法区放在永久代就有点不合适,所以在jdk1.7中,其中的常量池从方法区中移除,放在了堆里。

        异常:当方法区占用过大时,当没有内存可分配时,将会抛出OutOfMemoryError异常。

     

    (1)运行时常量池

          是方法区的一部分,Class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项就是常量池,用于存放编译期生成的各种字面量和符号引用,这部分内容将在类加载后进入方法区的运行时常量池中存放。

        

    2.堆

        堆中有句柄池和类的实例对象。堆是所有线程共享的一块内存区域,在虚拟机启动时创建。所有的对象实例和数组都要在堆上分配,随着技术成熟,这种说法也不是那么绝对。

        堆是垃圾收集器管理的主要区域,从内存回收角度考虑,由于现在都收集器基本都采用分代收集算法,所以堆被分为新生代和老年代;在细致一点就是 Eden空间、From Survivor空间、To Survivor空间等。

        从内存分配角度,堆可能被分出多个线程私有的分配缓冲区。针对这部分主要分析的是内存的分配和回收。

        成员变量存储在堆中的对象中,由垃圾回收器负责回收。

        异常:如果堆中没有内存可以完成实例分配,并且也无法再扩展时,会抛出OutOfMemoryError异常。

    3.直接内存

        这不是严格的虚拟机规范中定义的内存区域。但是也会频繁使用,也可能导致OutOfMemoryError异常出现。

        jdk1.4中新增NIO类(New Input/Output),引入了一种基于通道(Channel)与缓存区的I/O方式,它可以使用Native函数库直接分配堆外内存,然后通过一个存储在Java堆中的DirectByteBuffer对象作为这块内存的引用进行操作。这样能在一些场景中显著的提高性能,避免了在Java堆和Native堆中来回复制数据。

        本机直接内存分配不受到Java堆大小的限制,但是,既然是内存,肯定会受到本机总内存大小以及处理器寻址空间的限制。服务器管理员在配置虚拟机参数时,会根据实际内存设置-Xmx等参数信息,但经常忽略直接内存,使得各个内存区域总和大大于物理内存限制,从而导致动态扩展时出现OutOfMemoryError异常。        

     

     

    1.A a = new A();

    分析:当前代码执行步骤:

    (1)先在虚拟机栈中分配a的对象引用

    (2)在堆中分配A类的对象实例

    (3)将虚拟机栈中a的引用指向堆中分配的内存。

     

    2.String str = “abc”;

    分析:当前代码执行步骤

    (1)将引用str存储在栈中

    (2)在常量池中查找是否有字符串对象“abc”,若没有就在常量池中创建“abc”字符串

    (3)将str指向“abc”字符串对象

     

    3.String str = new String(“abc”);

    分析:当前代码执行步骤

    (1)在虚拟机栈中分配引用str内存

    (2)在堆中创建String实例对象

    (3)然后在常量池中寻找是否有“abc”字符串对象,没有就创建“abc”字符串对象

    (4)将堆实例指向“abc”

    (5)将虚拟机栈中str指向堆中的String实例对象

     

    展开全文
  • Java安全组成

    千次阅读 2019-07-27 18:36:27
    Java安全组成:JCA(Java机密体系结构 Java Cryptography Architecture)JCE(Java 加密扩展包 Java Cryptography Extension)JSSE(Java 安全套接字扩展包 Java Secure Sockets Extension)JAAS(Java鉴别与安全...
  • Java是面向对象的语言,对象都是由类实例化而来。一个Java应用,不论简单还是复杂,都是由若干个Java组成的。因此,对于初学者,先了解Java类的组成是必要的。 Java类的组成主要有3部分:数据成员、构造方法、...
  • Java虚拟机的运行时区域构成图如下所示:线程共享区域:Java堆:(1)Java堆是java虚拟机所管理的内存中最大的一块;(2)被所有线程共享区域,在虚拟机启动时创建,唯一目的存放对象实例;(3)堆区是gc的主要区域...
  • Java的对象头和对象组成详解

    万次阅读 多人点赞 2018-07-20 10:46:47
    目录 一,对象头 1,Mark Word 2,指向的指针 3,数组长度 ...java的对象头以下三部分组成: 1,Mark Word 2,指向的指针 3,数组长度(只有数组对象才有)   1,Mark Word Mar...
  • 深入理解Java String

    万次阅读 多人点赞 2018-06-28 21:15:55
    Java语言了中,所有类似“ABC”的字面值,都是String的实例;String位于java.lang包下,是Java语言的核心,提供了字符串的比较、查找、截取、大小写转换等操作;Java语言为“+”连接符(字符串连接符)以及...
  • 一、Java运行时内存中的数据区域: 每一个Java程序启动后,会获得一个JVM的实例,用来管理内存。Java 虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有个字的用途,以及...
  • 问题:相同的字符组成是指个字符串,字母以及各个字母的个数是相同的,只是顺序不同。如:“aaaabbc”与“abcbaaa”是相同字符组成。 方法一:排序法,也是最容易想到的方法,将个字符串转换为字节数组,...
  • Java对象的组成

    千次阅读 2021-01-20 13:25:01
    Java对象保存在内存中时,以下三部分组成 1,对象头 2,实例数据 3,对齐填充字节 一,对象头 java的对象头以下三部分组成: 1,Mark Word 2,指向的指针 3,数组长度(只有数组对象才有)...
  • 目录 1 线程上下文加载器 2 何时使用Thread.getContextClassLoader()? 3 加载器与Web容器 4 加载器与OSGi ...1 线程上下文加载器 ... java.lang.Thread中的方法 getContextClassLoader()和 se...
  • 组成部分

    千次阅读 2015-07-31 21:07:13
    java中的访问修饰符有四种分别为:public, protected, default(默认情况), private。访问修饰符的访问范围如下: public :  可以访问被本,同包,异包子,异包非子类以及其他的访问。 protected:  可以...
  • Java类加载器

    千次阅读 2018-09-14 19:10:56
    Java虚拟机的角度来讲,只存在种不同的加载器: 一种是启动加载器(Eootstrap ClassLoader), 这个加载器使用 C++语言实现,是虚拟机自身的一部分;另外一种就是所有其他的加载器, 这些加载器都由Java语言...
  • 点进文章的盆友不如先来做一道非常常见的面试题,如果你能做出来,可能你早已掌握并理解了java加载机制,若结果出乎你的意料,那就很有必要来了解了解java加载机制了。代码如下嗯哼?其实上面程序并不是关键...
  • 的基本组成

    千次阅读 2018-09-15 10:50:08
    的基本组成 在Java中了是所有Java应用程序的...一般由两部分组成,变量的定义和方法的定义。 成员变量 在Java中对象的属性也称为成员变量或实例变量,我们为了保证封装性,一般将成员变量用private修饰...
  • Java基础知识面试题(2020最新版)

    万次阅读 多人点赞 2020-02-19 12:11:27
    文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的...
  • Java 的生命周期详解

    千次阅读 2012-05-05 08:40:21
    一、 引 言 最近有位细心的朋友在阅读笔者的文章时,对java类的生命周期问题有一些疑惑,笔者打开百度搜了一下相关的问题,看到网上的资料很少有把这个问题讲明白的,主要是因为目前国内java方面的教材大多只是告诉...
  • 深入理解Java并发之synchronized实现原理

    万次阅读 多人点赞 2017-06-04 17:44:44
    【版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) ... 出自【zejian的博客】...深入理解Java类型信息(Class对象)与反射机制 深入理解Java枚举类型(enum) 深入理解Java注解类型(@Annotation) 深...
  • 组成

    千次阅读 2018-08-22 10:59:47
    类由两部分组成:属性(特征) 和 方法(行为) public class Phone{ //的组成:属性(特征)和方法(行为) //属性 String name; String brand; String price; //方法 //void 方法的返回类型 //方法...
  • 来自java文档 URI

    千次阅读 2012-05-06 15:59:21
    URI java.lang.Object   java.net.URI 所有已实现的接口: Serializable, ComparableURI> public final class URI extends Object implements ComparableURI>, Se
  • Java体系:组成结构 运行机制 JRE/JDK/OpenJDK Java SE/EE/ME Java优点  Java平台是一个庞大的体系,为了更好的使用Java,我们需要对Java体系有一个全面的了解。下面我们将会了解到: 1、什么是 Java ...
  • Java类加载及对象创建过程详解

    千次阅读 多人点赞 2019-06-27 08:00:00
    加载过程 加载的五个过程:加载、验证、准备、解析、初始化。 ... 在Java堆中生成一个代表这个java.lang.Class对象,作为方法区域数据的访问入口。 验证 验证阶段作用是保证Class...
  • Java中Date和Calendar

    千次阅读 2013-12-17 14:25:37
    前言 写后台程序的时候,经常需要存储当前服务器的时间戳,使用时间戳也很方便,客户端和服务器端都可以根据...Java语言中的Calendar,Date,DateFormat组成Java标准的一个基本但是非常重要的部分。日期是商业逻辑
  • 编写一个Java类

    千次阅读 多人点赞 2019-06-03 18:53:56
    1编写一个Java类 Java中的用关键字class声明。Java源代码文件中只能包含一公用(public),文件名必须与公用的类名相同,文件扩展名为“.java”。 一个的成员变量和方法出现在声明的大括号中。...
  • Java|如何用Java定义一个

    千次阅读 2020-05-24 11:52:32
    是用class关键字来定义的一种抽象数据类型,不但定义了抽象数据类型的组成(成员变量),同时还定义了对该类型可以实施的操作(方法),类名的首字母必须大写。 注释:1.java 会给成员变量
  • Java枚举

    万次阅读 2016-10-24 13:29:10
    java语言中还没有引入枚举类型之前,表示枚举类型的常用模式是声明一组具有int常量。之前我们通常利用public final static 方法定义的代码如下,分别用1 表示春天,2表示夏天,3表示秋天,4表示冬天 public class ...
  • java类中注释的认识

    千次阅读 2013-11-06 07:47:22
    提到java中的注释可能但凡有点java知识的人会认为,这狗屁博客太没水平了,谁不知道啊,java中的注释分为:单行注释和多行注释。想来您可能也就知道这么多,关于注释的其他方面的知识你知道吗,请参见本博文,本博文...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 401,574
精华内容 160,629
热门标签
关键字:

java类由哪两部分组成

java 订阅