【Java编译】含package的类文件编译

含package的类文件编译:

package com.zhangxueliang.setdemo;
public class Demo1 {
    public static void main(String[] args) {
        System.out.println("123456");
    }
}

package com.zhangxueliang.setdemo;

import java.util.HashSet;

/*
 *    使用HashSet存储自定义对象并遍历
 *    通过查看源码发现:
 *                HashSet的add()方法,首先会使用当前集合中的每一个元素和新添加的元素进行hash值比较,
 *                如果hash值不一样,则直接添加新的元素
 *                如果hash值一样,比较地址值或者使用equals方法进行比较
 *                比较结果一样,则认为是重复不添加
 *                所有的比较结果都不一样则添加
 */
public class HashSetDemo2 {
    public static void main(String[] args) {
        //创建集合对象
        HashSet<Student> hs = new HashSet<Student>();
        //创建元素对象
        Student s = new Student("zhangsan",18);
        Student s2 = new Student("lisi",19);
        Student s3 = new Student("lisi",19);
        //添加元素对象
        hs.add(s);
        hs.add(s2);
        hs.add(s3);
        //遍历集合对象
        for (Student student : hs) {
            System.out.println(student);
        }

    }

}

class Student {
    String name;
    int age;

    public Student(String name,int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student [name=" + name + ", age=" + age + "]";
    }

    @Override
    public boolean equals(Object obj) {
        //System.out.println("-------------------");
        Student s = (Student)obj;//向下转型,可以获取子类特有成员

        //比较年龄是否相等,如果不等则返回false
        if(this.age != s.age) {
            return false;
        }

        //比较姓名是否相等,如果不等则返回false
        if(!this.name.equals(s.name)) {
            return false;
        }

        //默认返回true,说明两个学生是相等的
        return true;
    }

    @Override
    public int hashCode() {
        return 1;
    }

}

原文地址:https://www.cnblogs.com/niwotaxuexiba/p/10259326.html

时间: 2024-08-28 11:13:56

【Java编译】含package的类文件编译的相关文章

Java直接用javac来编译带package的类

在没有package语句的java类, 我们可以直接使用: javac Test.java 就可以了, 如果Test.java中包含package语句,如:package abc; 编译后,是要求Test.class文件放在abc目录下的 所以这时候就又两种方法达到目的: 1.笨方法,先直接编译Test.java 1.1. javac Test.java 1.2. 然后手动去创建abc目录 1.3. 再把Test.class文件拷贝到abc目录下 2.使用 javac -d 目标目录 类名 eg

C预编译, 预处理, C/C++头文件, 编译控制,

在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征.依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的. 其格式一般为: #Pragma Para 其中Para 为参数,下面来看一些常用的参数. (1)message 参数. Message 参数是我最喜欢的一个参数,它能够在编译信息输出窗口中输

Java-Runoob-高级教程-实例-环境设置实例:2.Java 实例 – Java 如何运行一个编译过的类文件?

ylbtech-Java-Runoob-高级教程-实例-环境设置实例:2.Java 实例 – Java 如何运行一个编译过的类文件? 1.返回顶部 1. Java 实例 - 如何执行编译过 Java 文件  Java 实例 本文我们演示如何执行编译过的 HelloWorld.java 文件,其中 Java 代码如下: HelloWorld.java 文件 public class HelloWorld { public static void main(String []args) { Syst

在Eclipse配置并编译worldwind java2.1.0源码,选中Src目录下gov.nasa.worldwindx.examples包下ApplicationTemplate.java类文件run时提示“javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V”异常的解决办法

问题现象: 在Eclipse配置并编译worldwind java2.1.0源码,选中Src目录下gov.nasa.worldwindx.examples包下ApplicationTemplate.java类文件run时提示“javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V”异常. 解决办法: 1.定位到报错的方法为WWXML.java文件中的createDocumentBuilder方法: pub

Java中带包(创建及引用)的类的编译与调试

Java中带包(创建及引用)的类的编译与调试 java源程序的编译大家都知道,也就是cmd中到源文件所在目录下javac **.java即可,当程序中有包声明还能简简单单的直接javac **.java吗?答案当然是no,下面举个简单的例子证明一下直接javac **.java会怎么样. 如下:F:\javaweb2班\20160531目录下有A.java文件,注意源文件中有包声明 package mypack; public class A { String name; int age; pu

一个java文件编译之后会产生多个class文件

如图所示:如果编译后一个java文件中类有内部类的话,就会编译产生多个类

java文件编译及运行

1 配置环境变量 使用鼠标右击“我的电脑”->属性->高级->环境变量 系统变量->新建->变量名:JAVA_HOME 变量值:C:\Program Files (x86)\Java\jdk1.8.0_11 系统变量->新建->变量名:CLASSPATH 变量值:.;%JAVA_HOME%\lib(注意别遗漏当前路径.;) 系统变量->编辑->变量名:Path 在变量值的最前面加上:%JAVA_HOME%\bin; 2 编译java文件 javac H

详解Javac将java文件编译为class文件的过程

Java编译器总的来说分为前端编译器,JIT(just in time compiler)编译器,AOT(Ahead Of Time Compiler)编译器三种. 前端编译器: 将Java文件编译为class文件的编译器,目前主要有以下两个,Sun提供的Javac 和Eclipse JDT中的增量式编译器(ECJ) JIT编译器: 虚拟机后端运行期编译器,把字节码转换为机器码的过程.HotSpot Vm中提供的C1, C2编译器 AOT编译器:直接把Java文件转换为本地机器码的过程. GNU

ClassLoader Java中类加载出现在哪个阶段,编译期和运行期? 类加载和类装载是一样的吗

1.ClassLoader Java中类加载出现在哪个阶段,编译期和运行期? 类加载和类装载是一样的吗? :当然是运行期间啊,我自己有个理解误区,改正后如下:编译期间编译器是不去加载类的,只负责编译而已,去rt.jar拿数据干嘛,不依然是class文件,jvm是只要是class文件就能运行. 2.类加载ClassLoader,各个类加载器执行顺序是什么? :永远是自己写的加载器先去加载,记住并不是真正的加载,而是双亲委派机制,每个加载器都不真正去加载,而是去让父加载器去加载,想一下,自然界亦是如