JAVA编程思想4读书日记(1)

本总结只是对那些容易忽略的知识,或者容易不太理解的地方的总结,由于个人理解可能有偏差请谅解

1. 基础

1.程序运行时怎么样分配的

  1. 寄存器:是最快的储存区,但是寄存器的数量及其有限,所以寄存器按需分配,不能直接控制(在c和c++里面可以直接控制)
  2. 堆栈仅次于寄存器的速度,一般用于储存变量,或者基本数据类型,如果指针向上则释放内存向下则释放空间;
  3. 堆位于ram(随机访问储存器),用于存放java对象,存活的时间不确定,相对而言分配和释放的速度会比堆栈的速度慢;
  4. 常量储存:常量值直接放在代码的内部,放在静态存储区<堆

2. 基本数据类型是如何储存的

答:基本数据是储存在堆栈里面的,变量和值都在堆栈里面,而引用类型只有变量在堆栈里面;”在java里没有无符号类型”


biginteger和bigdecimal类有数据丢失么

答:我们知道在基本数据类型里面如果最大的就是double了,但是也最多保存小数点后面十多位的精度,对于要求比较高精度的行业例如航天….就要求使用这两个类

static的应用用场景


答:对于那些需要优先加载,或只需要保存一个的变量和方法使用静态,当 ,然会有静态代码块和静态内部类


javadoc/** /可应给所有的方法和成员变量注释么

答:javadoc的注释只能应用为public和protected成员注释,其他权限就算注释了也看不见


javadoc里面可以使用html标签么

答:可以


java里有sizeof()么

答:因为在java每个平台对应的数据类型所占用的数据类型都是一样大的,不需要用sizeof()来计算空间,因为在c和c++在不同平台,int可能不一样大


java里有goto么?

答:在java里goto是作为保留值,不能使用但是可以用break和continue加标签的形式实现跳出多重循环


规则如下:

  1. 一般continue会退回最内层循环的开头,并继续执行
  2. 带标签的contnue会达到标签的位置,并,并重新进入紧接着在哪个标签后面的循环.
  3. 一般的break会终端并跳出当前循环
  4. 带标签的break会中断并跳出标签所指的循环”用于需要跳出多个循环的引用场景不用写多个break”

代码如下:

package cn.java.javadc;

public class Myfor {
    public static void main(String[] args) {
        int i=0;
        outer:
            for (; true; ) {
                inner:
                    for (; i < 10; i++) {
                        System.out.println(i);
                        if (i==2) {
                            System.out.println("con");
                            continue ;
                        }
                        if (i==3) {
                            System.out.println("break");
                            i++;
                            break;

                        }
                        if (i==7) {
                            System.out.println("con outer");
                            i++;
                        continue outer;

                        }
                        if (i==8) {
                            System.out.println("break outer");
                            break outer;
                        }
                        for (int j = 0; j < 5; j++) {
                            if (j==3) {
                                System.out.println("con inner");
                                continue inner;
                            }
                        }
                    }

            }

    }

}

构造函数有返回值么

答:构造函数没有返回值,也不能在前面加入void如果加入了void就变成了普通方法了,虽然在我们看来确实返回了对象;


不同参数的方法和普通类型的方法可以形成重载,那不同顺序的形参会重载方法么

答:不同的形参顺序也是方法的重载


finaize()的应用,比如说你必须要达到某种条件才清楚对象的时候可以用finaize()来验证:

代码如下:

package cn.java.javadc;
/*
 * 题目:编写名为tank的类,此类的状态可以是满的或空地,其终结条件是,
 * 对象被清理时必须处于空状态,请编写finalize()以检验终结条件是否成立.在
 * main()中测试tank可能发生的几种情况
 * 题目解析:坦克的血量为0的时候才能被清除
 * 
 * 
 */
public class Tank {
    public static void main(String[] args) {
        TankDome tank1=new TankDome();
        tank1.eliminate();
        new TankDome();//没有被引用就会被清除
        System.gc();
    }

}
class TankDome{

    int blood;

    public TankDome() {

        this.blood = 100;//如果创建tank对象则赋予100血量的初始值
    }
    //清除模块
    public void eliminate(){

        blood=0;

    }

    @Override
    protected void finalize() throws Throwable {
        if (blood!=0) {
            System.out.println("不能被清除");

        }

    }




}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值