
Java
ckt_创可贴
这个作者很懒,什么都没留下…
展开
-
重写方法时,新写的方法的访问权限要高于被重写的方法
。。。。。。。原创 2018-01-10 21:31:16 · 2789 阅读 · 0 评论 -
接口中的静态方法不能被实现类继承和子接口继承,但是接口中的非静态的默认方法可以被实现类继承。
。。。原创 2018-01-12 10:53:29 · 5090 阅读 · 4 评论 -
无法从静态上下文引用非静态方法,非静态上下文中,可以访问静态方法吗?
。。。原创 2018-01-12 10:53:58 · 401 阅读 · 0 评论 -
只有java的内置异常JVM才能自动检查出来,其它的异常需要程序员通过编程检查出来。。。
。。。。。。原创 2018-01-12 16:11:09 · 270 阅读 · 0 评论 -
catch语句覆盖catch语句。。。。。
DOS中,范围更广的catch写在范围小的catch前面,DOS界面的JAVA编译器会报错。。。。。原创 2018-01-12 16:56:05 · 457 阅读 · 1 评论 -
finally
使用finally时,即使try和catch中有return,也会执行这个方法中的finally语句。。。。如果try/catch语句后面的语句没有被标记上finally,try和catch中有return时,不会执行这行语句。有finally的语句仍然会被执行。。。。。原创 2018-01-12 18:14:27 · 277 阅读 · 0 评论 -
java编写时换行
java编辑时,在双引号内部,不能够换行,否者编译错误。。。。原创 2018-01-12 18:43:42 · 809 阅读 · 0 评论 -
DOS中编译,java代码中的方法一定要有返回类型
不返回的,用void,有返回值的要写具体的返回类型。。。int 、char、 String等等原创 2018-01-12 19:24:16 · 235 阅读 · 0 评论 -
非检查异常,JVM会自动throw exception,并且在程序员没有catch非检查异常时,JVM会catch做简单处理。。。
但是,系统自动处理的非检测异常,并没有使用try/catch那样用户友好,在出现非检测异常时,程序会中断。。。后面的代码不会执行。。。。如下图:System.out.println("haahaaa");语句不会被执行。。。原创 2018-01-12 16:08:49 · 325 阅读 · 0 评论 -
javac 对于要编译的.java文件的名称,不区别大小写(在没有歧义的情况下)。。
javac 对于要编译的.java文件的名称,不区别大小写。。。。。运行程序的java指令是,严格区分大小写的。。。(如:图一)javac目录文件夹中不能同时有 dJ.java 和 Dj.java 两个文件。。。。(如:图二)。。测试表明,在Windows的桌面上创建文件夹时,也不去分大小写。。(如:图三)。。。。javac目录文件夹中不能同时有 dJ.java 和 Dj原创 2018-01-21 21:07:17 · 1318 阅读 · 0 评论 -
范型
范型中的方法的返回值问题。图中标出的函数返回值为Integer,编译报错,应为T为Number类或者以Number为父类的类,但不一定就是Integer类或者能转化为Integer类的类。。。(有些特殊情况可以,例如:在数值类型的赋值过程中,int double 等类型的数值,可以相互转化类型,但数值,可能发生变动。。)把Integer换成Number后,编程成功。。。原创 2018-01-21 21:35:59 · 240 阅读 · 0 评论 -
返回integer的函数,但函数中没有return语句,编译会怎样????void 但是有ruturn会报错
编译会报错,提示:缺少返回语句。。。补充声明为void的函数体中,有return XX; 编译会报错,但是可以有ruturn;可以有ruturn;原创 2018-01-21 21:46:26 · 1033 阅读 · 0 评论 -
变量名也不能用已有的标识符。。。
并不是只有函数名,类名不能用已有的标识符,实验表明变量名 也不能使用已有的标识符。。。Integer int; 不能通过编译,Integer it; 可以通过编译,应为int是已存在的标识符。。。。原创 2018-01-22 00:17:59 · 356 阅读 · 0 评论 -
为什么int无法转换为Double????
规律:拆、装箱和升、降级两者可以在同一条语句中进行,但是一定要先拆箱或装箱再升级或者降级。。。一条语句中,int无法转换为Double,因为这里涉及到先升级再装箱子,拆装箱一定要在升降级前面。。。。。一条语句中,Integer无法转换为Double,因为这要先拆箱子再升级再装箱,涉及到3步操作,不符合上述规律。。。。。可以自动拆箱再自动升级,但是不能自动升级再装箱?????原创 2018-01-22 00:42:44 · 15116 阅读 · 1 评论 -
static <T extends Comparable<T>, V extends T> boolean className {}
T extends Comparable最关键的是传入的T类型必须已经是实现了Comparable接口中compareTo()这个方法。这种语法中,implements和extends统一写成extends。原创 2018-01-22 10:56:43 · 485 阅读 · 0 评论 -
RandomAccessFile一定要设置初始seek吗?
一定要。。。。。,之后也可以设置seek的值,如果不设置,seek会根据已经读取的数据,自动移动指针。。。原创 2018-01-13 21:49:46 · 677 阅读 · 0 评论 -
在桌面上一个文件里面为DOS界面的java根目录,怎么才能访问桌面上面的文件???
未解答原创 2018-01-13 22:05:45 · 316 阅读 · 0 评论 -
泛型类和泛型方法,区别
在泛型类中,“在泛型方法中方法后面的“除了上述的两种情况,范型方法还有一个经典的用法。。’下面是泛型类和泛型方法的几个书写正确的实验图片。。。。。第一种情况:(方法中用“?”)第二种情况:(第一种情况的特例,即:“?”可以用字母代替)下面图片中划红圈的“?”,只有在泛型方法的参数的类型和泛型类的类型相同时,才能有字母代替,且是原创 2018-01-22 13:31:23 · 5178 阅读 · 2 评论 -
JDK1.8.0_151 bug 泛型
static void haha(T x, V y) { } 的V extends T中,T是参数时候,JDK1.8不会报错,这应该是JDK1.8的bug。。如果把V extends T中的T改为具体的类,如果带入的参数不符合要求,JDK1.8能成功报错。。。。。。。。下面是bug展示过程下面是类型的编程,同样是JDK1.8.0_151,编译会报错,有错误提示原创 2018-01-23 00:14:24 · 1405 阅读 · 0 评论 -
构造函数一定不要加void等修饰符,否则这个函数不会被当做构造函数去使用,默认的构造函数是没有参数的。
public 可以有 。。。。。。。。没有添加构造函数时,编译器自动提供一个不接受参数的构造函数,但自己添加构造函数时,编译器就不添加构造函数。。。如果自己添加了一个接受参数的构造函数,还想同时拥有不接受参数的构造函数,这个时候要自己重载一个不接收参数的构造函数,因为这个时候,编译器是不会提供默认构造函数的。。。。。原创 2018-01-23 14:09:26 · 2589 阅读 · 0 评论 -
类型转换
先考虑int Integer double Double。。。它们之间涉及到:1、类型转换(类的引用的赋值)。。。2、自动装箱。。。3、自动升级为复杂的数据类型。。(在需要double时候,如果带入int类型的数据,int会被自动转换为double类型的数据。)规律:(之前已经发过博客,这里再次总结一下) 先自动拆箱子再类型升级。。。应该不能先自动升级再自动装箱,应为这种情原创 2018-01-23 20:04:27 · 154 阅读 · 0 评论 -
数据类型转换
低级的数据可以向高级的数据类型自动转换((int double类型)与(Integer和Double)之间不能发生数据升级),高级数据类型向低级数据类型转换,javac会编译出错,不能通过编译(自动转箱也适用),要手动强制进行类型转换才可以。。。。。。。原创 2018-01-22 00:00:35 · 180 阅读 · 0 评论 -
自动装箱、自动拆箱子 针对 八种类型
Double、 Float、Long、Integer、 Short、 Byte、 Character、 Boolean。。。。原创 2018-01-23 20:55:11 · 186 阅读 · 0 评论 -
只有线程在创建时命名,才可以用Thread.getName();方法获得名称。。。。
在线程创建时,不用预留String变量存储线程名称。。。。在创建时命名:MyThread(String name) { thrd = new Thread(this, name); thrd.start();原创 2018-01-16 09:37:49 · 2247 阅读 · 0 评论 -
thread.start();是转去执行子线程吗???
thread.start();表示,这个时候,子线程已经准备好,并不代表现在CPU一定转去执行子线程,什么时候转去执行子线程由JVM决定。下面是源代码的一部分和运兴结果。。图片表明,thread.start();之后,CPU仍在在执行主线程的程序,在稍后才切换到子线程。。。。原创 2018-01-16 10:08:47 · 385 阅读 · 0 评论 -
通配符“?” 泛型数组的限制
“?”的用途一、用在方法实参,二、泛型数组的限制。。。泛型数组的限制,不能写“T”,不能带入具体类型参数。。Gen gens[] = new Gen[10];原创 2018-01-23 22:37:34 · 332 阅读 · 0 评论 -
“?”相当于实参。。。对于泛型A<T>。。。《“A”有些情况下等价于“A<?>,有些情况不等价” 。。。。》“?”相当于实参
相同的情况:Gen gens[] = new Gen[10]; 等价于 Gen gens[] = new Gen[10];不相同的情况:。。。。。。。。。。原创 2018-01-23 22:47:15 · 243 阅读 · 0 评论 -
数组的写法
下面圈中的四种表示方法,前两种符合语法规范。。后两种不符合语法规范,不能通过编译。。。原创 2018-01-23 23:12:04 · 1742 阅读 · 0 评论 -
创建后,在命名线程,线程是final标识的,创建时添加线程名,后,还能用final void setName(String threadName);吗?
可以吧原创 2018-01-16 10:41:49 · 255 阅读 · 0 评论 -
public final static PrintStream out = null; 与 public final static PrintStream out; 的区别???
public final static PrintStream out = null; 与 public final static PrintStream out; 的区别???答:没有区别。原创 2018-01-07 16:27:52 · 952 阅读 · 2 评论 -
线程的两种创建形式
一、通过扩展线程二、实现Runnable接口原创 2018-01-16 14:58:44 · 153 阅读 · 0 评论 -
Java中父类方法的调用
对于已覆盖的方法来说,例如Child是Parent的子类,而且,Child和Parent都有个toString()方法,也就是说,Child覆盖Parent的toString()方法。如果child要调用Parent的toString()方法,只需要把child强制转换为Parent就可以,也就是(Parent)child.toString(),这样就是调用其父类的toString()方法。如果不原创 2018-01-07 18:25:09 · 4847 阅读 · 1 评论 -
继承父类,子类中又从新构建一个父类?
继承父类,子类中又从新构建一个父类?class FilterOutputStream extends OutputStream { /** * The underlying output stream to be filtered. */ protected OutputStream out;原创 2018-01-07 19:23:16 · 234 阅读 · 0 评论 -
DOS界面编译,javac和java语句的根路径
如果是单个.java文件编译,没有写包,也别有写import。无论在哪里为基础,主要路径对,用javac编译会成功,这时用java语句要以生成的.class或者原先的.java文件为java运行语句的根路径。question:有包的时候呢?推测:应该是以一个自己选取的根路径为基础,在根路径中建立各种包,在包中以之前选取的根路径为基础,但不写根文件夹的名称,去写入相对应的包名称。java运行语句的根原创 2018-01-07 19:24:24 · 270 阅读 · 0 评论 -
类和方法中变量的初始化问题
变量在类中,在方法外,并且没有对变量进行手动初始化加上static后,编译成功,运行m的值被默认初始化为0紧接着static int m; 语句 , 补加了一条表达式这样写就没什么问题这样写然后,再这样写变量在方法中,并且没有初始化在方法中这样在方法中这样原创 2018-01-07 20:06:46 · 1010 阅读 · 1 评论 -
类中不能直接包含方法,要以函数的形式封装方法。(main类除外)。。。
类中不能直接包含方法,只能有函数,方法只能包含在函数中,即使一个类中只定义了一个方法,那么这个方法也要包含在一个函数中。也就是说,要为这个类创建一个函数,然后把要写的这个唯一的方法写在这个刚刚创建的唯一的一个函数中。。。。。。原创 2018-01-07 20:26:30 · 696 阅读 · 0 评论 -
新手错误
静态无法引用非静态成员,最好用B类继承A类,再在C类中创建main方法,在main方法中运行测试B类。原创 2018-01-07 20:39:00 · 169 阅读 · 0 评论 -
isAlive() 和 join() 方法
isAlive方法由线程调用,有返回值,如果线程还存活,返回true,如果线程消亡,返回false。。。join方法,也是由线程调用,如果线程结束,能成功完成join方法,如果,线程还存活,程序会阻塞在join方法这里。。。。。下图中,线程mt1结束后,才开始运行线程mt2和mt3。。。。。原创 2018-01-16 16:53:43 · 1081 阅读 · 0 评论 -
并不是所有的异常都要程序员去捕获
通过下面的非检查异常可以知道,这些异常不需要程序员去捕获,否则,代码将随处都是代码的捕获语句,也给编程带来极大的工作量。。。。下面的代码可以看出,由于setPriority()中的优先级的取值范围是0-10.。。。mt1.thrd.setPriority(Thread.NORM_PRIORITY+10);NORM_PRIORITY的默认值是5,语句超过了最大取值。。。。。。程序运行时错误,显示原创 2018-01-16 18:46:31 · 1227 阅读 · 0 评论 -
访问父类中的方法,用父类名作引索,还是子类名作引索???
用子类作为引索在main中只创建子类的实例,用父类作引索结果如下:(只改变了C类)关于静态的呢在main中实例化子类B后,又实例化父类A原创 2018-01-07 21:08:34 · 135 阅读 · 0 评论