- 相关推荐
Java语言的作用域有哪些及分类知识
【提要】本篇《Java语言的作用域有哪些及如何分类【1】》特别为需要语言编程学习的朋友收集整理的,仅供参考。内容如下:
Java已经成为一个庞大而复杂的技术平台,对于开发人员而言,要想更好的掌握Java技术,深入理解底层的技术处理细节必不可少。以下是关于Java语言的作用域及分类的内容,欢迎阅读!Java语言的作用域有哪些及如何分类
在程序源码中,声明在不同地方的变量具有不同的作用域,例如:局部变量、全局变量等。在Java语言中,作用域是由花括号“{...}”的位置决定的,它决定了其定义的变量名的可见性与生命周期。
在Java语言中,变量类型主要有三种:成员变量、静态变量和局部变量。
类的成员变量的作用范围与类的实例化对象的作用范围相同,当类被实例化时,成员变量就会在内存中分配空间并初始化,直到这个被实例化对象的生命周期结束时,成员变量的生命周期才结束。
被 static修饰的成员变量称为静态变量或全局变量,与成员变量不同的是,静态变量不依赖于 特定的实例,而是被所有实例所共享,也就是说,只要一个类被加载,JVM就会给类的静态变量分配存储空间。因此,可以通过类名和变量名来访问静态变量。
局部变量的作用域与可见性为它所在的花括号内。
此外,成员变量也有四种作用域,它们的区别见下表。
(1)public。表明该成员变量或方法对所有类或对象都是可见的,所有类或对象都可以直 接访问。
(2)private。表明该成员变量或方法是私有的,只有当前类对其具有访问权限,除此之外 的其他类或者对象都没有访问权限。
(3)protected。表明该成员变量或方法对自己及其子类是可见的,即自己和子类具有权限 访问。除此之外的其他类或对象都没有访问权限。
(4)default。表明该成员变量或方法只有自己和与其位于同一包内的类可见。若父类与子 类位于同一个包内,则子类对父类的default成员变量或方法都有访问权限;若父类与子类位 于不同的package (包)内,则没有访问权限。
需要注意的是,这些修饰符只能修饰成员变量,不能用来修饰局部变量。private与protected 不能用来修饰类 (只有 public 、abstract 或 final 能用来修饰类)。【相关阅读】Java四大核心技术详解
1Java虚拟机
Java虚拟机的主要任务是装在class文件并且执行其中的字节码。Java虚拟机包含一个类装载器,它可以从程序和API中装载class文件。Java API中只有程序执行时需要的那些类才会被装载。字节码由执行引擎来执行。
不同的Java虚拟机中,执行引擎可能实现得非常不同。在由软件实现的虚拟机中,最简单的执行引擎就是一次性解释字节码。另一种执行引擎更快,但是也更消耗内存,叫做"即时编译器(just-in- time compiler)"。在这种情况下,第一次被执行的字节码会被编译成本地机器代码。编译出的本地机器代码会被缓存,当方法以后被调用的时候可以重用。第三种执行引擎是自适应优化器。在这种方法里,虚拟机开始的时候解释字节码 但是会监视运行中程序的活动,并且记录下使用最频繁的代码段。程序运行的时候,虚拟机只把那些活动最频繁的代码编译成本地代码,其他的代码由于使用得不是很频繁,继续保留为字节码-由虚拟机继续解释它们。一个自适应的优化器可以使得Java虚拟机在80%~90%的时间里执行被优化过的本地代码,而只需要编译10%~20%的对性能有影响的代码。
当Java虚拟机是由主机操作系统上的软件实现的时候,Java程序通过调用本地方法(native method)和主机交互。Java中有两种方法: Java方法和本地方法。Java方法是由Java语言编写,编译成字节码文件,存储在class文件中的。本地方法是由其他语言(比如c,c++或汇编语言)编写的,编译成何处理器相关的机器代码。本地方法保存在动态链接库中,格式是各个平台专有的。运行中Java程序调用本地方法时,虚拟机装载包含这个本地方法的动态库,并调用这个方法。本地方法是联系Java程序和底层主机操作系统的连接方法。
通过本地方法,Java程序可以直接访问底层操作系统的资源。一个本地方法接口(Java Native Interface, JNI)-使得本地方法可以在特定主机系统的任何一个Java平台实现上运行。
如果希望使用特定主机上的资源,它们又无法从Java API访问,那么可以写一个平台相关的Java程序来调用本地方法。如果希望保证程序的平台无关性,那么只能通过Java API来访问底层系统资源。
2类装载器的体系结构
一个Java应用程序可以使用两种类装载器:"启动(bootstrap)"类装载器和用户定义的类装载器。启动类装载器(这是系统中唯一的)是Java虚拟机实现的一部分。启动类装载器通常使用某种默认方式从 本地磁盘中装载类,包括Java API类。
【Java语言的作用域有哪些及分类知识】上海花千坊相关的文章:
Java语言的优点有哪些12-08
java基础语言有哪些03-19
了解Java语言小知识12-05
浅谈Java语言中static的作用12-02
Java语言有什么特点02-20
Java语言编程基础知识04-18
掌握Java语言需要了解的知识12-02
Java未来的发展方向有哪些12-04
Java常见误区与细节有哪些呢12-03