码迷,mamicode.com
首页 > 编程语言 > 详细

Java基础(三)

时间:2019-11-28 00:58:26      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:sys   不能   区分   结果   finally   加载类   其他   定时   进入   

技术图片

静态变量与实例变量

  • static关键字修饰的变量,叫类变量或者静态变量。没有static修饰的为实例变量;
  • 类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名进行访问;
  • 静态变量的生命周期取决于类的生命周期,实例变量的生命周期取决于类的实例,每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期。

抽象类和接口

  • 抽象类中可以包含抽象方法和实例方法,而接口中只能定义抽象方法;
  • 实现抽象类可以有选择地重写需要用到的方法,实现接口的类一定要实现接口里定义的所有方法。一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现;
  • 继承只有单一继承性,一个类只内能继承一个抽象父类,但是可以实现多个接口;
  • 抽象类中可以有构造方法,接口中不能定义构造方法;
  • 接口中定义的变量都是静态常量。

程序示例

//接口
public interface AbilityImpl {

    public static final String MOUTH = "mouth";
    public static final String HAND = "hand";
    public static final String FOOT = "foot";

    public abstract void read();
    public abstract void write();

}

//抽象类
public abstract class Person implements AbilityImpl {

    @Override
    public void read() {
        System.out.println(MOUTH + " read() ... ");
    }

    @Override
    public void write() {
        System.out.println(HAND + " write() ... ");
    }

    public void walk() {
        System.out.println(FOOT + " walk() ... ");
    }

}

//实体类
public class Student extends Person {

    Student() {
        System.out.println("Student()");
    }

    @Override
    public void read() {
        System.out.println("Student read() ... ");
    }

    public static void main(String[] args) {
        Student student = new Student();
        student.read();
        student.write();
        student.walk();
    }

}

输出结果

Student()
Student read() ... 
hand write() ... 
foot walk() ... 

Integer与int的区别(封装类和基本类型的区别)

  • Integer是int的包装类,是引用类型,变量必须实例化后才能使用;int是基本数据类型;
  • Integer的默认值为null,而int的默认值为0,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,例如,要想表达出没有参加考试和考试成绩为0的区别,则只能使用Integer;
  • 在JSP开发中,Integer的默认为null,所以用el表达式在文本框中显示时,值为空白字符串,而int默认的默认值为0,所以用el表达式在文本框中显示时,结果为0,所以,int不适合作为web层的表单数据的类型;
  • 在Hibernate中,如果将OID定义为Integer类型,那么Hibernate就可以根据其值是否为null而判断一个对象是否是临时的,如果将OID定义为了int类型,还需要在hbm映射文件中设置其unsaved-value属性为0;
  • Integer提供了多个与整数相关的操作方法,例如,将一个字符串转换成整数,Integer中还定义了表示整数的最大值和最小值的常量。

异常的抛出,throws、throw、try、catch、finally分别有什么意义

  • try:指定一块预防所有“异常”的程序。
  • catch:紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的“异常”的类型。
  • throw:用来明确地抛出一个“异常”。
  • throws:标明一个成员函数可能抛出的各种“异常”。
  • finally:不管发生什么“异常”都被执行一段代码。

Java 中sleep方法和wait方法的区别

  • sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,将执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。
  • wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。

Java中是否存在 i+1 小于 i 的情况

  • 当i=2^32-1时,i+1数据溢出变成负数,就达成了条件i+1 < i,其他类型同理;
    在JDK中,整形类型是有范围的,最大值为Integer.MAX_VALUE,即2147483647,最小值为Integer.MIN_VALUE即-2147483648,对整形最大值加1,2147483648(越界了),那么此时值为多少呢?结果是-2147483648,即是Integer.MIN_VALUE。

Java基础(三)

标签:sys   不能   区分   结果   finally   加载类   其他   定时   进入   

原文地址:https://www.cnblogs.com/maxiaobing/p/11946288.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!