`
文章列表
Java中的多线程共享同一个成员变量,拥有不同的局部变量。   public class ThreadTest { public static void main(String[] args) { Runnable r = new Skyritx(); Thread thread1 = new Thread(r); Thread thread2 = new Thread(r); thread1.start(); thread2.start(); } } class Skyritx implements Runna ...
集合中的元素不能重复。(即不能重复对同一地址的引用) 集合中存储的是对象的引用(地址)。   Hashset的内部机制:也使用到了equals方法(所以经常需要重写)   1.当向集合(set)中添加对象是,首先计算该对象的hashcode值,当该hashcode值所在位置无对象时,直接添加。 2.否则,则进行equals方法比较,如果返回true,说明就是同一个对象,不再添加该对象;如果返回false,继续散列添加该对象。     此处,如果没有重写equals方法,那么就是判断内存地址,只有重写了equals方法,才能判断内容是否相同。     同时,当重写了equals ...
最近在代码开发过程中,总结了一下需要注意的几条规则:   1.对于try,catch块中应将较小异常放在较大异常前面。   public class Test { double mul(double a,double b) { try{ return a/b; } catch(ArithmeticException ex){ return 0; } catch(Exception ex){ return 0; } finally{ } } }  如上所示,较小的异常应该catch在前面。 ...
先给出一个问题引入:   请编写一个多线程程序,实现两个线程,其中一个线程实现对某个成员变量每次加1操作,另外一个线程则实现对某个成员变量每次减一操作。同时,保证成员变量的值不大于1,不小于0。该成员变量的初始值为0。   要实现这个问题,显然我们需要使用多线程进行约束操作。     package Code; public class Sample { private int number; public synchronized void increase() { if(number != 0) { try { w ...
JAVA中的单态(Singleton)模式指:一个类只能并且有且只能生成一个对象。 因此,单态类中的构造方法必然是private。 同时注意静态的方法必然返回静态变量。   package com.code; public class Test { public static void main(String[] args) { } } class SingleTon { private static SingleTon singleton; private SingleTon() { } public static ...
在前面几次中,我们已经介绍了Object中的equals方法是与==相等的,String重写equals方法,所以才会比较字符串的内容。 那么对于字符数组,我们应该如何比较其内容是否相同呢?   package com.code; public class Test { public static void main(String[] args) { char[] ch1 = new char[2]; char[] ch2 = new char[2]; ch1[0]='a'; ch1[1]='b'; ch2[0]='a'; ch2[ ...
JAVA的三个最基本特征:继承、封装和多态,今天着重分析下多态(Polymorphism)。 对于多态,我们用以下一句话理解足矣: 父类或者接口类型的引用指向子类或者实现该接口的类的对象。   接口里面只有方法声明,没有具体实现。 package com.code; public class PolymorphismTest { public static void main(String[] args) { Parent p = new Child(); p.eat(); } } class Parent { void eat( ...
在JAVA中,使用泛型(Generics)是相当方便的。这里提供泛型的两个实现例子: package com.code; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; public class GenericsTest { // public void method1(List<Object> list) // { // // } // // public void method2() // { // method1(new ...
Java中的异常大致分为两类: 1.Checked Exception :一定能够检测出来的异常,因此一定要需要处理。处理的方式有两种:继续往外抛,知道抛到JVM,这是一种消极的方法;另外是使用try catch. 2.Unchecked Exception :又叫做runtime exception,这一类型的异常在运行时才能发现,平常检测不出来。对于这一类型的异常,可以不作任何处理。   Error和Exception都是继承于Throwable。   解决方法1:继续向外抛,直到抛到JVM(JAVA 虚拟机); import java.io.IOException; ...
对于final类型的成员变量的初始化方式: 1.声明变量时直接赋值。 2.在构造方法中完成赋值。(所有的构造方法中都有有相应赋值) public class FinalTest { public static void main(String[] args) { } } class Test { public final int x; public Test() { x = 5; } public Test(int xx) { x = 10; } } 1.对于final类型的原生数据类型来说,值一旦确定不能 ...
我们可以使用反射Reflection修改私有成员变量的内容。   import java.lang.reflect.Field; public class ReflectionTest { public static void main(String[] args) throws Exception{ Test test = new Test(); System.out.println("Frist X:" + test.GetX()); Class<?> clazz = Test.class; Field fie ...
关于Java中的方法重写(override,overwrite),以及重载(overload) 方法重写要求除了方法体外,其余基本保持一致: 1.相同的方法名称、返回类型、参数列表。 2.子类访问级别大于或等于父类访问级别。 3.子类中方法抛出的异常范围不能大于父类。   public class OverrideTest { public static void main(String[] args) { Parent parent = new Parent(); Child child = new Child(); parent.Get(1, 1); ...
对于类中的代码成分,静态的部分优于构造方法执行。(并且是从上往下执行)   子类一律优先寻找父类不带参数的构造方法。 如果一定要调用,须显示调用父类带参数的构造方法。super.   public class StaticTest { public static void main(String[] args) { new Child(); } } class Parent { public Parent() { System.out.println("Parent Constructor"); } ...
Java中数据分为两种类型:原生数据类型和引用类型。 对于两种数据类型我们需要明确的一点是: pass by value 即无论对于原生数据类型还是引用类型都是传递value,只是原生数据类型传递的value是值,而引用类型传递的是地址。   public class PassTest { public void method1(int a) { a = 100; } public void method2(Point point) { point.x = 100; point.y = 100; } public static void ...
1. String相关区分存储位置:① JAVA堆栈中:new出来的新对象一定存储于JAVA堆栈中② String池中:常量形式存储于String常量池中。注意:New出来的内容相同的内容String存储于JAVA堆中的不同位置,是两个不同对象;而常量形式构造的相同内容的String存储于JAVA常量池中的相同位置,是一个对象。 public class StringTest { public static void main(String[] args) { String str1 = new String("abc"); String str2 = ...
Global site tag (gtag.js) - Google Analytics