今日在线

美亚,关于Java类和包的那些事,acfun

*.Java文件

问题:一个.java源文件中是否能够包括多个类(不是内部类)?有什么约束?

答案:能够有多个类,但只能有一个public的类,而且public的类名有必要与文件名相一致。一个文件中能够只要非public类,假如只要一个非public类,此类能够跟文件名不同。

为什么一个java源文件中只能有一个public类?

在java编程思维(第四版)一书中有美亚,关于Java类和包的那些事,acfun这样3段话(6.4 类的拜访权限):

1.每个编译单元(文件)都只能有一个public类,这标明,每个编译单元都有单一的公共接口,用public类来体现。该接口能够按要求包括许多的支撑包拜访权限的类。假如在某个编译单元内有一个以上的public类,编译器就会给出过错信息。

2.public类的称号有必要彻底与含有该编译单元的文件名相同,包括大小写。假如不匹配,相同将得到编译过错。

3.尽管不是很常用,但编译单元内富婆高兴杯彻底不带public类也是美亚,关于Java类和包的那些事,acfun或许的。在这种情况下,能够随意对文件命名。

总结相关的几个问题:

1、一个”.java”源文件中是否能够包括多个类(不是内部类)?有什么约束?

  答:能够有多个类,但只能有一个public的类,而且public的类名有必要与文件名相一k2036致。

2、为什么一个文件中只能有一个public的类

  答:编译器在编译时,针对一个java源代码文件(也称为“编译单元”)只会承受一个public类。不然报错。

3、在java文件中是否能够没有public类

  答:public类不是有必要的,java文件中能够没有public类。

4、为什么这个public的类的类名有必要和文件名相同

  答: 是为了便利虚拟机在相应的途径中找到相应的类所对应的字节码文件。

Main办法

主函数:是一个特别的函数,作为程序的进口,能够被JVM调用钱大人

主函数的界说:

public:代表着该函数拜访权限是最大的

static:代表主函数跟着类的加载就现已存在了

void:主函数没有详细的返回值

9816益考网

main:不是关键字,可是一个特别的单词,能够被JVM辨认

(String[] args):函数的参数,参数类型是一个数组,该数组中的元素师字符串,字符串数组。main(String[] args) 字符谢童谢滨串数组的 此时空数组的长度是0,但也能够在 运转的时分向其间传入参数。

主函数时固定格局的,JVM辨认

主函数能够被重载,可是JVM只辨认main(String[] args),其他都是作为一般函数。这儿面的args常识数组变量能够更改,其他都不能更改。

一个j美亚,关于Java类和包的那些事,acfunava文件中能够包括许多个类,每个类中有且仅有一个主函数,可是每个java文件中能够包括多个主函数,在运转时,需求指定JVM进口是哪个。例如一个类的主函数能够调用另一个类的主函数。纷歧定会运用public类的主函数。

外部类的拜访权限

外部类只能用public和defa海老名姬菜ult润饰。

为什么要对外部类或类做润饰呢?

1.存在包概念:public 9c8776和 default 能区别这个外部类能对不同包作一个区分 (default润饰的类,其他包中引进不了这个类,public润饰的类才干被import)

2.protected是包内可见而且子类可见,可是当一个外部类想要承继一个protected润饰的非同包类时,压根找不到这个类,更别提几层了

3.private润饰的外部类,其他任何外部类都无法导入它。

//Java中的文件名要美亚,关于Java类和包的那些事,acfun和public修美亚,关于Java类和包的那些事,acfun饰的类名相同,不然会报错//假如没有public润饰的类,则文件能够随意命名public class Java中的类文件 {}//非公共开类的拜访权限默许是包拜访权限,不能用private和pr美亚,关于Java类和包的那些事,acfunotected//一个外部类的拜访权限只要两种,一种是包内可见,一种是包外可见。//假如用private润饰,其他类底子无法看到这个类,也就没有意义了。//假如用protected,尽管也是包内可见,可是假如有子类想要承继该类可是不同包时,//压根找不到这个类,也不或许承继它了,所以爽性用default替代。class A{}

岳母女婿

Java包的命名规矩

以 java.* 最初的是Java的中心包,一切程序都会运用这些包中的类;

以 javax. 最初的是扩展包,x 是 extension 的意思,也便是扩展。尽管 javax. 是对 java. 的优化和扩展,可是由于 javax. 运用的越来天使云商汇越多,许多程序都依赖于 javax.,所以 javax. 也是中心的一部分了,也随JDK一同发布。

以 org.* 最初的是各个安排或安排发布的包,由于这些安排很有影响力,它们的代码质量很高,所以也将它们开发的部分常用的类随JDK一同发布。

在包的命名方面,为了防止重名,有年代广场的蟋蟀好词好句一个常规:咱们都以自己域名的倒写方式作为最初来为自己开发的包命名,例如百度发布的包会以 com.baidu. 最初,w3c安排发布的包会以 org.w3c. 最初,微学苑发布的包会以 net.weixueyuan.* 最初……

安排安排的域名后缀一般为 org,公司的域名后缀一般为 com,能够以为 org. 最初的包为非盈利安排安排发布的包,它们一般是开源的,能够免费运用在自己的产品中,不用考虑侵权问题,而以 com. 最初的包往往由盈利性的公司发布,或许会有版权问题,运用时要留意。

import的运用

Java import以及Java类的查找途径

假如你期望运用Java包中的类,就有必要先运用import句子导入

语法为:

import package1[.packag海权世纪e2…].classname;package 为包名,classname 为类名。例如:import java.util.Date; // 导入 java.util 包下的 Date 类import java.util.Scanner; // 导入 java.util 包下的 Scanner 类import javax.swing.*; // 导入 javax.swing 包下的一切类,* 标明一切类

留意:

import 只能导入包所包括的类,而不能导入包。

为便利起见,咱们一般帝夫难求不导入独自的类,而是导入包下一切的类,例如 import java.util.*;。

Java 编译器默许为一切的 Java 程序导入了 JDK 的 java.lang 包中一切的类(import java.lang.*;),其间界说了一些常用类,如 System、String、Object、Math 等,因而咱们能够直接运用这些类而不用显式导入。可是运用其他类有必要先导入。

前面讲到的”Hello World“程序运用了Syst雪源康em.out.println(); 句子,System 类坐落 java.lang 包,尽管咱们没有显式导入这个包中的类,可是Java 编译器默许现已为咱们导入了,不然程序会履行失利。

java类的查找途径

Java程序运转时要导入相应的类,也便是加载 .class 文件的进程。

假设有如下的 import 句子:

import p1.Test;

该句子标明要导入 p1 包中的 Test 类。

装置JDK时,咱们现已设置了环境变量 CLASSPATH 来指明类库的途径,它的值为 .;%JAVA_HOME%lib,而 JAVA_HOME 又为 D:Program Filesjdk1.7.0_71,所以 CLASSPATH 等价于 .;D:Program Filesjdk1.7.0_71lib。

假如在第一个途径下找到了所需的类文件,则中止查找,不然持续查找后边的途径,假如在一切的途径下都未能找到所需的类深村野医文件,则编译或运转犯错。

你能够在CLASSPATH变量中添加查找途径,例如 .;%JAVA_HOME%lib;C:javalib,那么你就能够将类文件放在 C:javalib 目录下,Java运转环境相同会找到。

用户自己写的类能够经过IDE指定编译后的class文件的输出目录,appclassloader会到指定目录进行类的加载

下面是一个import两种拜访权限的类的实例:

package com.javase.Java中的类.一个包;public class 大局拜访 {}package com.javase.Java中的类.一个包;class 包拜访权限 {}package com.javase.Java中的类;//import能够导入根底包以及揭露的类,需求运用类名的全途径//而且在导入某个包.*时,是不会把子包的类给导进来的,这样能够防止导入过错。//注阮以伟意//import com.javase.Java中的类.一个包.包拜访君丝佳加盟权限;//保护色赵钶这美亚,关于Java类和包的那些事,acfun个导入会报错,由于这个类没有用public润饰,无法用import铁森林风云导入。import com.javase.Java中的类.一个包.大局拜访;//能够导入。

语法
声明:该文观念仅代表作者自己,搜狐号系信息发布渠道,搜狐仅供给信息存储空间效劳。 艺龙艺龙

相关文章