精华内容
下载资源
问答
  • java主方法的参数作用什么
  • java中使用static关键字声明代码块。...由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行。classTest{intid;Stringname;static{System.out.println("我是静态代码块");}}例如在使用...

    在java中使用static关键字声明的代码块。静态块用于初始化类,为类的属性初始化。每个静态代码块只会执行一次。静态代码块随着类加载而加载,有多个静态代码块的,按代码块前后顺序加载。

    由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行。class Test{

    int id;

    String name;

    static{

    System.out.println("我是静态代码块");

    }

    }

    例如在使用JDBC封装时就需要用到单例模式及静态代码吗。static{

    Properties p=new Properties();

    InputStream in=DB.class.getClassLoader().getResourceAsStream("db.properties");

    try {

    p.load(in);

    driver=p.getProperty("driver");

    connectionURL=p.getProperty("connection_URL");

    username=p.getProperty("username");

    password=p.getProperty("password");

    } catch (IOException e) {

    }

    }

    展开全文
  • 这个是博对hashcode初步理解,以后加深了会再来更新:1、hashcode是什么?hashcode是对象散列码,不同对象几乎不一样,说几乎是因为还是可以一样。特点:每一个对象都有hashcode,默认值是每一个对象...

    这个是博主对hashcode的初步理解,以后加深了会再来更新:

    1、hashcode是什么?

    hashcode是对象的散列码,不同的对象几乎不一样,说几乎是因为还是可以一样的。

    特点:每一个对象都有hashcode,默认的值是每一个对象的地址。

    2、hashcode的作用:

    博主已知的方便用户使用散列表插入数据,我们知道,集合有两种,list----可重复,set----不可重复。

    其中set实现不可重复就需要使用到hashcode和equals方法。

    散列表set是使用链表数组实现的,每一个列表被称作桶,而查找表中对象的位置使用的方法是:

    1)、计算对象的散列码hashcode;

    2)、公式:hashcode%桶数=索引;eg:某一个对象的散列码是76268,有128个桶,那么对应的这个对象的位置就是在第108个桶中。

    而在插入对象到散列表中的时候使用的是同样的过程,只是这个时候可能会发现原有的位置被占用了,桶已经满了,这个时候就需要equals方法进行判断是否相等。

    所以:

    在重构equals方法的时候一定要重构hashcode方法,不然使用散列表的时候桶都找不到,更不用说下一步的判断是否是同一个对象了。

    下面是示例代码:

    public static void main(String[] args) {

    String hello = "hello";

    StringBuilder helloSB = new StringBuilder(hello);

    String hello2 = "hello";

    StringBuilder hello2SB = new StringBuilder(hello2);

    System.out.println("hello's hashcode:" + hello.hashCode());

    System.out.println("helloSB's hashcode:" + helloSB.hashCode());

    System.out.println("hello2's hashcode:" + hello2.hashCode());

    System.out.println("hello2SB's hashcode:" + hello2SB.hashCode());

    Set stringSet = new HashSet();

    Set sbSet = new HashSet();

    stringSet.add(hello);

    System.out.println("======" + stringSet.contains(hello2));

    stringSet.add(hello2);

    sbSet.add(helloSB);

    sbSet.add(hello2SB);

    Person person1 = new Person(1, "eke");

    Person person2 = new Person(1, "eke");

    Set personSet = new HashSet();

    personSet.add(person1);

    personSet.add(person2);

    PersonWithHashCode code1 = new PersonWithHashCode(1, "eke");

    PersonWithHashCode code2 = new PersonWithHashCode(1, "eke");

    Set codeSet = new HashSet();

    codeSet.add(code1);

    codeSet.add(code2);

    System.out.println(stringSet.size());

    System.out.println(sbSet.size());

    System.out.println(personSet.size());

    System.out.println(codeSet.size());

    }

    运行结果:

    hello's hashcode:99162322

    helloSB's hashcode:39219479

    hello2's hashcode:99162322

    hello2SB's hashcode:2031787571

    ======true

    1

    2

    2

    1

    下面是PersonWithHashCode,Person和PersonWithHashCode相比只是缺少了hashCode方法。

    贴这个代码还有一点是重构了equals方法,这个方法的重构是要遵循一定规则的(图片来自《java核心技术卷II》):

    38aa1206abcbd939700f3be19401c018.png

    public class PersonWithHashCode {

    private int id;

    private String name;

    public PersonWithHashCode(int id, String name) {

    this.id = id;

    this.name = name;

    }

    public int getId() {

    return id;

    }

    public void setId(int id) {

    this.id = id;

    }

    public String getName() {

    return name;

    }

    public void setName(String name) {

    this.name = name;

    }

    @Override

    public int hashCode() {

    return id * 24 + name.hashCode();

    }

    @Override

    public boolean equals(Object object) {

    if (object == this)

    return true;

    if (object == null)

    return false;

    if (getClass() != object.getClass())

    return false;

    PersonWithHashCode person = (PersonWithHashCode) object;

    return this.id == person.id

    && Person.StringUtils.compare(name, person.getName());

    }

    static class StringUtils {

    static boolean compare(String a, String b) {

    if (a == null && b == null)

    return true;

    if (a == null && b != null) {

    return false;

    }

    if (a != null && b == null)

    return false;

    return a.equals(b);

    }

    }

    }

    展开全文
  • 这个是博对hashcode初步理解,以后加深了会再来更新: 1、hashcode是什么?...2、hashcode的作用: 博已知方便用户使用散列表插入数据,我们知道,集合有两种,list----可重复,set----不可重复。 其...

    这个是博主对hashcode的初步理解,以后加深了会再来更新:

    1、hashcode是什么?

    hashcode是对象的散列码,不同的对象几乎不一样,说几乎是因为还是可以一样的。

    特点:每一个对象都有hashcode,默认的值是每一个对象的地址。

    2、hashcode的作用:

    博主已知的方便用户使用散列表插入数据,我们知道,集合有两种,list----可重复,set----不可重复。

    其中set实现不可重复就需要使用到hashcode和equals方法。

    散列表set是使用链表数组实现的,每一个列表被称作桶,而查找表中对象的位置使用的方法是:

    1)、计算对象的散列码hashcode;

    2)、公式:hashcode%桶数=索引;eg:某一个对象的散列码是76268,有128个桶,那么对应的这个对象的位置就是在第108个桶中。

    而在插入对象到散列表中的时候使用的是同样的过程,只是这个时候可能会发现原有的位置被占用了,桶已经满了,这个时候就需要equals方法进行判断是否相等。

     

    所以:

    在重构equals方法的时候一定要重构hashcode方法,不然使用散列表的时候桶都找不到,更不用说下一步的判断是否是同一个对象了。

     

    下面是示例代码:

     

        public static void main(String[] args) {
            String hello = "hello";
            StringBuilder helloSB = new StringBuilder(hello);
    
            String hello2 = "hello";
            StringBuilder hello2SB = new StringBuilder(hello2);
    
            System.out.println("hello's hashcode:" + hello.hashCode());
            System.out.println("helloSB's hashcode:" + helloSB.hashCode());
            System.out.println("hello2's hashcode:" + hello2.hashCode());
            System.out.println("hello2SB's hashcode:" + hello2SB.hashCode());
    
    
            Set stringSet = new HashSet();
            Set sbSet = new HashSet();
    
            stringSet.add(hello);
            System.out.println("======" + stringSet.contains(hello2));
            stringSet.add(hello2);
    
    
            sbSet.add(helloSB);
            sbSet.add(hello2SB);
    
    
            Person person1 = new Person(1, "eke");
            Person person2 = new Person(1, "eke");
    
            Set personSet = new HashSet();
    
            personSet.add(person1);
            personSet.add(person2);
    
    
            PersonWithHashCode code1 = new PersonWithHashCode(1, "eke");
            PersonWithHashCode code2 = new PersonWithHashCode(1, "eke");
    
            Set codeSet = new HashSet();
    
            codeSet.add(code1);
            codeSet.add(code2);
    
            System.out.println(stringSet.size());
            System.out.println(sbSet.size());
            System.out.println(personSet.size());
            System.out.println(codeSet.size());
        }
    

    运行结果:  

    hello's hashcode:99162322
    helloSB's hashcode:39219479
    hello2's hashcode:99162322
    hello2SB's hashcode:2031787571
    ======true
    1
    2
    2
    1
    

      

    下面是PersonWithHashCode,Person和PersonWithHashCode相比只是缺少了hashCode方法。 

     贴这个代码还有一点是重构了equals方法,这个方法的重构是要遵循一定规则的(图片来自《java核心技术卷II》):

    public class PersonWithHashCode {
        private int id;
        private String name;
    
        public PersonWithHashCode(int id, String name) {
            this.id = id;
            this.name = name;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public int hashCode() {
            return id * 24 + name.hashCode();
        }
    
        @Override
        public boolean equals(Object object) {
            if (object == this)
                return true;
    
            if (object == null)
                return false;
    
            if (getClass() != object.getClass())
                return false;
    
            PersonWithHashCode person = (PersonWithHashCode) object;
            return this.id == person.id
                    && Person.StringUtils.compare(name, person.getName());
        }
    
        static class StringUtils {
            static boolean compare(String a, String b) {
                if (a == null && b == null)
                    return true;
    
                if (a == null && b != null) {
                    return false;
                }
    
                if (a != null && b == null)
                    return false;
    
                return a.equals(b);
            }
    
        }
    
    }
    

      

     

    转载于:https://www.cnblogs.com/heisehenbai/p/8028649.html

    展开全文
  • step2:代码如下/*** 本实例探究一个方法访问其它成员方法有什么的规律*/public class MethodVisitMethod {//create 主方法public static void main(String[] args) {System.out.println("综合测试结果,得出如下结论...

    step2:代码如下

    /**

    * 本实例探究一个方法访问其它成员方法有什么的规律

    */

    public class MethodVisitMethod {

    //create 主方法

    public static void main(String[] args) {

    System.out.println("综合测试结果,得出如下结论:");

    System.out.println("1.静态的方法只能调用到静态的成员方法。");

    System.out.println("2.非静态的方法可以调用到静态的和非静态的方法。");

    }

    //create 公有、静态的方法

    public static void show_1() {

    int a = 10;

    int b = 20;

    int c = a + b;

    System.out.println(c);

    }

    //create 私有、静态的方法

    private static void show_2() {

    int a = 10;

    int b = 20;

    int c = a * b;

    System.out.println(c);

    }

    //create 公有的、非静态的方法

    public void show_3() {

    int a = 10;

    int b = 20;

    int c = a / b;

    System.out.println(c);

    }

    //create 私有、非静态的方法

    private void show_4() {

    int a = 10;

    int b = 20;

    int c = a - b;

    System.out.println(c);

    }

    //create 测试方法

    public static void test_1() {

    show_1();

    show_2();

    //show_3();//无法从静态上下文中引用非静态 方法 show_3()

    //show_4();//无法从静态上下文中引用非静态 方法 show_4()

    //说明公有、静态的方法只能调用静态的方法。

    }

    private static void test_2() {

    show_1();

    show_2();

    //show_3();//无法从静态上下文中引用非静态 方法 show_3()

    //show_4();//无法从静态上下文中引用非静态 方法 show_4()

    //说明私有、静态的方法只能调用静态的方法。

    }

    public void test_3() {

    show_1();

    show_2();

    show_3();

    show_4();

    //说明公有、非静态的方法可以调用静态的和非静态的方法。

    }

    private void test_4() {

    show_1();

    show_2();

    show_3();

    show_4();

    //说明私有、非静态的方法可以调用静态的和非静态的方法。

    }

    /*

    *综合以下测试,可得出如下结论:

    * 1.静态的方法只能调用到静态的成员方法。

    * 2.非静态的方法可以调用到静态的和非静态的方法。

    3 .成员方法调用另一成员方法取决于两者的static,与它们的public\private无关。

    * */

    }

    展开全文
  • 我正在尝试从Java中的单独类中调用方法,但它似乎不起作用,或者我做错了什么.我想要实现的是将RaceEvent类中的Race方法调用到我的主程序中(检查主程序中的注释).这是课程:import java.util.Random;public class ...
  • volatile修饰变量不保留拷贝,直接访问内存synchronized用来修饰一个方法或者一个代码块时候,能够保证在同一时刻最多只有一个线程执行该段代码5、有哪些不同线程生命周期?6、你对线程优先级理解是什么?...
  • java方法方法重载

    2021-01-21 16:53:25
    构造方法的格式和作用5.this关键字的作用 方法方法重载 实操演示: 在IDEA中输入以下代码 //使用榨汁机输出不同杯数果汁,返回值类型为String(种类),int(杯数) public class Jiuyang { public String ...
  • 程序 ``` import java.io.File; import java.io.FilenameFilter; public class HelloWorld { public static void main(String[]args) { File dir = new File("./TestDir"); Filter filter = new ...
  • 我正在尝试从Java中的单独类中调用方法,但它似乎不起作用,或者我做错了什么.我想要实现的是将RaceEvent类中的Race方法调用到我的主程序中(检查主程序中的注释).这是课程:import java.util.Random;public class ...
  • java多态作用的理解

    2020-08-10 11:15:19
    Java核心技术这本书时,多态内容讲解很少,只是举个例子告诉我们怎样使用多态,而没有明确说明为什么使用多态问题。 谈到面向对象编程语言时不可避免就会介绍继承,子类可以继承父类除private外成员...
  • 众所周知,Scala 是运行于Java平台(Java虚拟机),那么Scala程序编译之后会生成对应字节码文件,我们将字节码文件反编译成Java文件即可知Scala 为我们都做了什么. Scala 源代码 class Test4(a: String) class...
  • JavaIO流中输出流一般都有flush这个操作,这个操作的作用是强制将缓存中输出流(字节流,字符流等)强制输出。 为什么会有这么个方法啊? 因为输出流在进行输出时,比如像某个文件中写入内容,其实是先将...
  • 我正在学习Java,是初学者…请帮助我找出为什么它不起作用…在以下程序中,我目标是从主方法调用基类方法,而在派生类方法中不使用super关键字.如代码中所示,main方法中((A)b).num可以很好地工作,并且输出为预期...
  • String args[]或者String[] args表示给主方法传一个字符串数组.   而args是一个字符串数组变量名,不是关键字, 是arguments缩写,只是一个默认名,一般都习惯性照写.   class Example{  public static ...
  • Java hashCode()方法

    2019-06-05 10:57:59
    一共讨论两个问题:hashCode()方法与euqals()方法的关系、hashCode()方法在HashMap等散列数据结构中有什么作用 没有高深理论,以简单理解为. hashCode()方法与euqals()方法的关系 euqals()方法讲解 第一次...
  • 方法定义在类中主方法外,方法不能嵌套 4.语法: 有返回值类型方法 修饰符 返回值类型 方法名(参数列表){ 具体功能代码; return 返回值; } //定义一个方法,返回一个pi值 //返回值:需要 double 参数: 没有...
  • java volatile关键字使用方法及注意事项什么是volatile关键字volatile 关键字在多线程程序中起着很重要的作用。当多个线程操作同一个变量时,每个线程将拥有对那个变量本地缓存拷贝,因此,当某一个线程修改了这个...
  • 可见性在Java的内存模型中所有的的变量(这里的变量是类全局变量,并不是局部变量,局部变量在方法内并没有线程安全的问题,因为变量随方法调用完成而销毁)都是存放在内存中的,而每个线程有自己的工作内存,每次...
  • 什么java中CAS

    千次阅读 2018-10-30 18:57:50
     本篇思路是先阐明无锁执行者CAS核心算法原理然后分析Java执行CAS实践者Unsafe类,该类中的方法都是native修饰,因此我们会以说明方法作用介绍Unsafe类,最后再介绍并发包中Atomic系统使用CAS原理...
  • JMM 的作用什么Java 线程通信由 JMM 控制,JMM 主要目的是定义程序中各种变量访问规则。变量包括实例字段、静态字段,但不包括局部变量与方法参数,因为它们是线程私有,不存在多线程竞争。JMM 遵循一...
  • volatile关键字到底有什么作用

    千次阅读 2020-03-27 09:42:19
    Java 语言包含两种内在同步机制:同步块(或方法)和 volatile 变量,相比于synchronized(synchronized通常称为重量级锁),volatile更轻量级,因为它不会引起线程上下文切换和调度。但是volatile 变量同...
  • 老师对于数组我还是不太清楚哪个是类那个是对象?int score[];score =new int[3]; 老师成员变量的作用域是本类吗?向下作用吗?...本类的主方法里可以产生本类对象,方法里产生对象,栈堆里发生了
  • JAVA_Thinking in Java

    2011-12-02 17:58:15
    2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...
  • java面试题典 java 面试题 经典

    热门讨论 2010-06-18 13:42:36
    31. Java的接口和C++的虚类的相同和不同处。 12 32. Java中的异常处理机制的简单原理和应用。 12 33. 垃圾回收的优点和原理。并考虑2种回收机制。 12 34. 你所知道的集合类都有哪些?主要方法? 13 35. 描述一下JVM...
  • Java类面向对象和面向过程Java中类语法Java对象对象Java中类语法主方法示例类编写对象创建什么是类与对象?我们知道,自然界中生物有界门纲目科属种分类,而具有相同或相似特征和作用的非生物,...
  • 它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 240
精华内容 96
关键字:

java的主方法什么作用

java 订阅