博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java练习总结
阅读量:3778 次
发布时间:2019-05-22

本文共 2635 字,大约阅读时间需要 8 分钟。

记录平时使用java时发现的一些细节问题。

1、抽象类中是可以有静态方法的,在被子类继承后可以通过子类的实例化对象调用;也可以直接通过抽象类和子类的类名来调用,就像其他的静态方法一样。同样的静态变量也可以使用相同的方法访问。

实例:

package classTest;abstract class Person0 {	public static String name = "jack";    public static void sayHello() {        System.out.println("hello");    }} class Javaer extends Person0{     }public class Demo {	public static void main(String[] agrs) {        Person0.sayHello();        Javaer.sayHello();        Javaer a = new Javaer();        a.sayHello();        System.out.println(Person0.name);        System.out.println(Javaer.name);        System.out.println(a.name);    }}

结果:

hellohellohellojackjackjack

2、子类实例化时,默认调用父类的无参构造方法(不管子类的构造器有没有参数,因为子类继承的是父类的属性和方法,只调用父类的无参构造器就可以继承父类的属性和方法,因此不会调用父类的有参构造器),再调用子类的有参/无参构造器。

示例:

package classTest;class Father {	public Father(){		System.out.println("父类的无参构造方法");	}	public Father(int a ) {		System.err.println("父类的有参构造方法"+a);	}	} class Son extends Father{	 public Son() {		System.out.println("子类中的无参构造方法");	}	 public Son(int a ) {		 System.out.println("子类中的有参构造方法"+a);	 }	  }public class TestExecute {	public static void main(String[] args) {		Son s = new Son();		System.out.println("---------------");		Son a = new Son(5); 	}}

结果:

父类的无参构造方法子类中的无参构造方法---------------父类的无参构造方法子类中的有参构造方法5

3、类的构造方法可以调用成员方法

在声明对象时,在栈区为对象分配内存存储对象的引用,在new(实例化)时在堆区为对象分配内存存储对象的成员。实例化时会调用构造函数,构造函数再调用成员方法(此时已为成员方法分配内存)

4、声明对象和实例化对象时分别会执行哪些函数

5、去除字符串首尾的双引号

String oldStr = "test";String newStr = oldStr.substring(1, oldStr.length()-1);System.out.printf(newStr);

输出结果:test

6、不可实例化的类,比如工具类,使用private修饰构造方法。
7、多线程通过实现Callable()接口和Future()接口创建线程,调用get()方法无法获得返回值
必须在线程执行完成后才可以get到返回值;

package practice;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.FutureTask;public class thread_test {public static void main(String[] args) throws InterruptedException, ExecutionException {	//new MyThread().start();	//new Thread(new MyRunnable()).start();	//new Thread(new FutureTask<>(new MyCallable())).start();	System.out.println("======");	System.out.println(new FutureTask
(new MyCallable()).get()); System.out.println("======"); Callable
myCallable = new MyCallable(); FutureTask
fTask = new FutureTask
(myCallable); new Thread(fTask).start(); System.out.println(fTask.get());}}class MyThread extends Thread{ public void run() { System.out.println("继承Thread类创建线程"); }}class MyRunnable implements Runnable{ public void run() { System.out.println("实现Runnable接口创建线程"); }}class MyCallable implements Callable
{ public Integer call() { System.out.println("实现Callable接口创建线程"); return 1; }}

转载地址:http://rypvn.baihongyu.com/

你可能感兴趣的文章
最大权闭合子图
查看>>
最小权点覆盖集 与 最大权独立集
查看>>
POJ 2125 Destroying The Graph && Acwing 2325. 有向图破坏(拆点+最小权点覆盖集)
查看>>
计算几何基础知识整理大全 代码模板与证明过程 (直线、向量、多边形、三维计算几何、凸包、半平面交、最小圆覆盖)
查看>>
计算几何之 判断两线段是否相交 代码模板与证明
查看>>
三维计算几何之三维凸包 增量法
查看>>
MySQL变量,存储过程,函数,流程控制详解(小白都能懂哦)
查看>>
9篇小白都能懂系列博客学完MySQL基础
查看>>
还在为Linux入门发愁?
查看>>
如何优雅而又不失内涵的在centos7下安装tree命令
查看>>
彻底掌握Linux文件与目录管理命令?进来看看硬核总结
查看>>
一文搞定Vim/Vi编辑器
查看>>
剑指offer之斐波那契问题(C++/Java双重实现)
查看>>
Linux网络命令
查看>>
一天教会三岁表弟HTML,你值得拥有
查看>>
CSS基础汇总
查看>>
SpringCloud服务注册与发现
查看>>
SpringCloud Stream 消息驱动
查看>>
SpringCloud Sleuth 分布式请求链路
查看>>
SpringCloud Alibaba Nacos 服务注册和配置中心
查看>>