java中public class与class的区别详解
在编写类的时候可以使用两种方式定义类:
public class定义类:
class定义类:
如果一个类声明的时候使用了public class进行了声明,则类名称必须与文件名称完全一致。
范例:定义一个类(文件名称为:Hello.java)
代码如下:
public class HelloDemo{ //声明一个类,类名称的命名规范:所有单词的首字母大写
public static void main(String args[]){ //主方法
System.out.println("HelloWorld!!!"); //系统输出,在屏幕上打印
}
};
此类使用public class声明,类名称是HelloDemo,但是文件名称Hello.java,所以,此时编译时会出现如下问题:
代码如下:
Hello.java:1 类 HelloDemo 是公共的,应在名为HelloDemo.java文件中声明
public class HelloDemo{ //声明一个类,类名称的命名规范:所有单词首字母大写
1、错误
以上的错误提示表示:因为使用的是public class声明,所以类名称应该与文件名称完全一致,即应该使用"HelloDemo.java"表示类的名称。
如果类的声明使用了class的话,则类名称可以与文件名称不一致,但是执行的时候肯定执行的是生成后的名称。
范例:有如下代码(文件名称为:Hello.java)
代码如下:
class HelloDemo{
public static void main(String args[]){
System.out.println("HelloWorld!!!");
}
};
文件名称为Hello.java,文件名称与类名称不一致,但是因为使用了class声明所以,此时编译不会产生任何错误,但是生成之后的*.class文件的名称是和class声明的类名称完全一致的:HelloDemo.class
执行的时候不能再执行java Hello,而是应该执行javaHelloDemo
在一个*.java的文件中,只能有一个public class的声明,但是允许有多个class的声明
代码如下:
public class Hello{
public static void main(String args[]){
System.out.println("HelloWorld!!!");
}
};
class A{};
class B{};
在以上的文件中,定义了三个类,那么此时程序编译之后会形成三个*.class文件。
相关推荐
-
java Class文件内部结构解析过程详解
大学的时候,就看过java虚拟机规范第二版,最近把最新的Java虚拟机规范第三版(java se 1.7版本)温习了一遍,发现java虚拟机规范中java class的文件结构部分并没有太大的变化,顺便也整理了一下.java语言是跨平台的,所谓一次编写,到处运行.之所以是跨平台的,就是java定义了一套与操作系统,硬件无关的字节码格式,这个字节码就是用java class文件来表示的,java class文件内部定义了虚拟机可以识别的字节码格式,这个格式是平台无关性的,在linux系统或者在wi
-
java中Class.forName的作用浅谈
Class.forName(xxx.xx.xx) 返回的是一个类 一.首先你要明白在java里面任何class都要装载在虚拟机上才能运行. 1. forName这句话就是装载类用的(new是根据加载到内存中的类创建一个实例,要分清楚). 至于什么时候用,可以考虑一下这个问题,给你一个字符串变量,它代表一个类的包名和类名,你怎么实例化它? A a = (A)Class.forName("pacage.A").newInstance(); 这和 A a
-
实例分析Java Class的文件结构
学习Java的朋友应该都知道Java从刚开始的时候就打着平台无关性的旗号,说"一次编写,到处运行",其实说到无关性,Java平台还有另外一个无关 性那就是语言无关性,要实现语言无关性,那么Java体系中的class的文件结构或者说是字节码就显得相当重要了,其实Java从刚开始的时候就有两套 规范,一个是Java语言规范,另外一个是Java虚拟机规范,Java语言规范只是规定了Java语言相关的约束以及规则,而虚拟机规范则才是真正从跨 平台的角度去设计的.今天我们就以一个实际的例子来看看
-
java环境变量为什么要配置path和classpath详细解答
当时初学java时只是关心如何做,现在回过头来研究为什么这个问题,先从最开始环境变量配置开始吧! 为何配置path: 在cmd命令中输入一个指令时先在当前文件目录下查找命令文件,path的环境变量中依次查找命令文件,以最先找到的为准,因为配置了path,所以在cmd命令下可以直接输入java和javac等jdk的命令 为何配置classpath: jvm在查找class文件时如果没有设置classpath会在当前路径查找,设置classpth后 仅在classpath路径下查找class文件 写
-
运行java的class文件方法详解
一.运行class文件 执行带main方法的class文件,命令行为: java <CLASS文件名> 注意:CLASS文件名不要带文件后缀.class 例如: 复制代码 代码如下: java Test 如果执行的class文件是带包的,即在类文件中使用了:package <包名> 那应该在包的基路径下执行,命令行为: java <包名>.CLASS文件名 例如:PackageTest.java中,其包名为:com.ee2ee.test,对应的语句为: package
-
Java 采用反射获取class属性值的实现代码
原理:Java的反射能够获取属性的名称,然后通过invoke调用类的某个方法.比如有个属性叫userName,这个类写了个方法叫getUserName,通过invoke调用getUserName这个方法.代码如下 复制代码 代码如下: import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.HashMap;import java.util.Map;public class ParameterB
-
java中public class与class的区别详解
在编写类的时候可以使用两种方式定义类:public class定义类:class定义类:如果一个类声明的时候使用了public class进行了声明,则类名称必须与文件名称完全一致.范例:定义一个类(文件名称为:Hello.java) 复制代码 代码如下: public class HelloDemo{ //声明一个类,类名称的命名规范:所有单词的首字母大写 public static void main(String args[]){ //主方法 System.
-
java中的i++和++i的区别详解
java中的前加加++和后加加++,有很多人搞的很晕,不太明白!今天我举几个例子说明下前++和后++的区别! 其实大家只要记住一句话就可以了,前++是先自加再使用而后++是先使用再自加! 前++和后++总结:其实大家只要记住一句话就可以了,前++是先自加再使用而后++是先使用再自加! 请大家看下面的例子就明白了! public class Test { public static void main(String[] args) { //测试,前加加和后加加 //前++和后++总结:其实大家只要
-
Java中Validated、Valid 、Validator区别详解
目录 1. 结论先出 JSR 380 Valid VS Validated 不同点? Validator 2. @Valid和@Validated 注解 3. 例子 4.使用@Valid嵌套校验 5. 组合使用@Valid和@Validated 进行集合校验 6. 自定义校验 自定义约束注解 工作原理 结论 参考链接: 1. 结论先出 Valid VS Validated 相同点 都可以对方法和参数进行校验 @Valid和@Validated 两种注释都会导致应用标准Bean验证.
-
java中String StringBuffer和StringBuilder的区别详解
目录 从声明定义上来谈 从结构上来谈 从线程安全来谈 总结 从声明定义上来谈 只有String 可以 直接声明创建 而 StringBuffer 与 StringBuilder 必须去new对象 这是因为只有String会在这种声明方式下去字符串常量池创建,其他则没有 StringBuffer stf = new StringBuffer("abc"); StringBuilder stb = new StringBuilder("abc"); StringBuff
-
Java中BufferedReader与Scanner读入的区别详解
java.util.Scanner类是一个简单的文本扫描类,它可以解析基本数据类型和字符串.它本质上是使用正则表达式去读取不同的数据类型. Java.io.BufferedReader类为了能够高效的读取字符序列,从字符输入流和字符缓冲区读取文本. 在Java中,我们都知道Java的标准输入串是System.in.但是我们却很少在Java中看到谁使用它,这是因为我们平时输入的都是一个字符串或者是一个数字等等.而System.in提供的read方法是通过字节来读取数据的,所以对我们来说不方便处理!
-
Java中关于int和Integer的区别详解
1.Java 中的数据类型分为基本数据类型和复杂数据类型 int是前者,integer 是后者(也就是一个类). 2.初始化时 复制代码 代码如下: int i = 1; Integer i = new Integer(1); // (要把integer 当做一个类看) int 是基本数据类型(面向过程留下的痕迹,不过是对Java的有益补充) Integer 是一个类,是int的扩展,定义了很多的转换方法 类似的还有:float Float.double Double.string Stri
-
Java中JSONObject与JSONArray的使用区别详解
最近公司开发的几个项目中,后台Action向前端传递数据都是Json格式,于是对JSONObject.JSONArray简单的研究了一下,废话不多说,想使用JSONObject.JSONArray,策则在项目中必须要有commons-lang.jar commons-beanutils.jar commons-collections.jar commons-logging.jar ezmorph.jar json-lib-2.2.2-jdk15.jar 这些Jar包. 1.JSONObject
-
Java多线程通讯之wait,notify的区别详解
下面通过代码给大家介绍java多线程通讯之wait notify的区别,具体内容如下所示: class Res{ public String username; public String sex; } class Out extends Thread{ Res res; public Out(Res res){ this.res=res; } @Override public void run() { //写操作 int count=0; while (true){ // synchroniz
-
Java中的重要核心知识点之继承详解
目录 一.继承 1.概念 2.语法 3.父类成员的访问 (1)子类中访问父类成员变量 (2)子类中访问父类成员方法 4.super关键字 5.子类构造方法 6.super和this 7.代码块执行顺序 8.父类成员在子类中的可见性 9.继承方式 10.final关键字 11.组合 一.继承 1.概念 继承(inheritance)机制:是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特 性的基础上进行扩展,增加新功能,这样产生新的类,称派生类.继承呈现了面向对象程序设计的
-
java 中Excel转shape file的实例详解
java 中Excel转shape file的实例详解 概述: 本文讲述如何结合geotools和POI实现Excel到shp的转换,再结合前文shp到geojson数据的转换,即可实现用户上传excel数据并在web端的展示功能. 截图: 原始Excel文件 运行耗时 运行结果 代码: package com.lzugis.geotools; import com.lzugis.CommonMethod; import com.vividsolutions.jts.geom.Coordina
随机推荐
- 利用Java快速查找21位花朵数示例代码
- javascript模仿msgbox提示效果代码
- JavaScript function函数种类详解
- 使用YUI+Ant 实现JS CSS压缩
- MySQL学习笔记1:安装和登录(多种方法)
- MySQL配置文件my.cnf中文版对照
- Java UrlRewriter伪静态技术运用深入分析
- 孩子,不要给父母当顺民!
- 初学Jquery插件制作 在SageCRM的查询屏幕隐藏部分行的功能
- 原生js实现addclass,removeclass,toggleclasss实例
- JS实现简单的天数计算器完整实例
- 查错补漏 在XP SP2系统中疯狂BT
- Ubuntu下配置Tomcat服务器以及设置自动启动的方法
- Java中的深拷贝(深复制)和浅拷贝(浅复制)介绍
- Java解析xml的四种方法汇总
- php求数组全排列,元素所有组合的方法
- 关于.NET异常处理的思考总结
- Java利用openoffice将doc、docx转为pdf实例代码
- Android studio设计简易计算器
- js取小数点后两位四种方法