代码-问一个JAVA的基础问题,希望大神们帮忙解惑。

问题描述

问一个JAVA的基础问题,希望大神们帮忙解惑。

有一段如下的代码,有几个疑惑:
1、定义了一个final的test1和一个static里面的test1,为什么定义2个test1不会有问题?
2、为什么在一个类中直接写static{ },这个是什么原理?
3、还有什么类似static{ }这样的写法?是什么原理?

public class MyOwenTest{
public static final String test1 = "a";
static{
String test1 = "a";
String test2 = "a";
String test3 = "a";
}
}

解决方案

  1. 作用域不同
  2. 类加载时会执行static{}
  3. 想不起来

解决方案二:

1、定义了一个final的test1和一个static里面的test1,为什么定义2个test1不会有问题?
2、为什么在一个类中直接写static{ },这个是什么原理?
3、还有什么类似static{ }这样的写法?是什么原理?

1 static{}表示类加载时候执行的一个静态代码段 在构造函数执行之前就运行(我记得是) 注意,是一个代码段 意味着不光是函数的定义 这里的 test1 和 外面的 test1
是两个两个域的问题(我是这么理解的)

2 1中已经说明了

3 有一个直接写 {} 用处差不多 只不过是普通的代码段(也就是没有静态代码段那么牛x) 执行顺序在静态代码段之后

其实这里的知识在 java编程思想4(Thinking In Java 4) 都有提到 而且很好 如果楼主看完了请无视下面所说

虽说看了很多 代码也编了 测试了 但是该忘还是忘
因为书这玩意只是理解 如果说做一个东西的话 不会的地方直接找书 或者上网找 在学也不迟 最重要的是基础

解决方案三:

static变量

  static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。

  static成员变量的初始化顺序按照定义的顺序进行初始化。

tatic代码块

  static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次

static{

String test1 = "a";
String test2 = "a";
String test3 = "a";
}
上面你可以这么写,但是你取不到这三个变量的
还可以这么用

 class Person{
    private Date birthDate;
    private static Date startDate,endDate;
    static{
        startDate = Date.valueOf("1946");
        endDate = Date.valueOf("1964");
    }

    public Person(Date birthDate) {
        this.birthDate = birthDate;
    }

    boolean isBornBoomer() {
        return birthDate.compareTo(startDate)>=0 && birthDate.compareTo(endDate) < 0;
    }
}
时间: 2024-08-31 02:24:08

代码-问一个JAVA的基础问题,希望大神们帮忙解惑。的相关文章

各位能不能提供一个MFC框架的C++计费系统,要是完整的实验报告和可直接运行的代码,希望大神帮帮忙吧

问题描述 各位能不能提供一个MFC框架的C++计费系统,要是完整的实验报告和可直接运行的代码,希望大神帮帮忙吧 高手有赏追加30金币,说到做到,为了应付学校的生产实习来着,还请各位理解............................................ 解决方案 那你google下吧,只是一个现成的报告,自己找找.我要睡觉了,懒得帮你了. 解决方案二: 一般代写论文是300~500每篇,折合成"金币"大约是6000~10000,而且因为"金币"没

游戏-这个一个bat文件,用来启动一个java项目时报错。大神帮忙解读一下是什么意思。

问题描述 这个一个bat文件,用来启动一个java项目时报错.大神帮忙解读一下是什么意思. 解决方案 解释下你这个$ARGS是用来做什么的. 解决方案二: 目测args是arguments的缩写,代表一个参数,而不是实际的命令.

遍历-Java字符串问题,求大神帮帮忙

问题描述 Java字符串问题,求大神帮帮忙 请用Java写这个程序,思考题: I am a student ! 定义一个方法: !student a am I 我有思路,但是我实现代码有困难,我的思路是:先将原字符串转换为字符数组,然后从头遍历,判断某个字符是否为空,一旦为空,将前面的存放到list集合中.然后继续从下一个开始遍历,然后判断是否为空,不为空继续向下遍历,然后继续遍历到为空的那个字符,然后继续将不为空的作为一个整体存入list集合中,往复循环进行,直至全部不为空的字符个数全部进入l

技术-最近在学习spring,学了一段时间了发现学的太过混乱 有些问题希望大神们帮忙解答下

问题描述 最近在学习spring,学了一段时间了发现学的太过混乱 有些问题希望大神们帮忙解答下 二.spring具体能做些什么(指在代码中)? 三.spring需要配置些什么?配置的这些有什么作用? 四.spring的工作原理是什么?采用了什么技术? 五.spring在和mvc框架整合时spring起到一个什么作用?怎么实现? 六.spring在和持久层框架整合的时候起到一个什么作用?怎么实现? 七.spring在ssh和ssm整合时作用于什么位置,起到了什么作用?怎么实现? 解决方案 一般的情

java IO 文件操作 希望大神解惑

问题描述 如何替换文件中的一行字符串?(也可以是如何在某非结尾行添加数据)已知条件:1:每一行的内容是唯一可识别的2:替换的字串Astr.length()是不确定的,即假设替换字串为Astr,被替换字串为Bstr,以下情况都有可能存在:Astr.length()<Bstr.length()Astr.length()==Bstr.length()Astr.length()>Bstr.length()3:解决方案语言随意,最好java吧....其它的语言希望有讲解~~最好满足下列要求:1:从头到尾

泛型-请教一个JAVA的基础问题

问题描述 请教一个JAVA的基础问题 有如下的一个接口,叫做:GenericDao,有几点不理解: 1.虽然知道E,K,V都是泛型,但是一直不太理解有什么用,比如:>这段代码有什么用,实现什么功能?如果不写会有什么影响? 2.为什么在类的定义中还可以extends,一般不都是 class A1 extends A,这么写么?为什么可以class A1 package com.patsnap.common.bean; import com.patsnap.common.entity.DBVersi

android-Android 自己写的一个全局事件管理器,感觉还有点儿问题,提上代码,希望大神们修改修改!!!

问题描述 Android 自己写的一个全局事件管理器,感觉还有点儿问题,提上代码,希望大神们修改修改!!! import java.util.ArrayList; import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import android.os

问一个Java泛型与类继承的问题

问题描述 问一个Java泛型与类继承的问题 直接上代码了 //DeviceRepository类 public abstract class DeviceRepository<T extends Device> extends DomainRepository<T> //DeviceEventHandler类第一种写法 public abstract class DeviceEventHandler<M extends Device,R extends DeviceRepos

静态网页-新人问一个html的基础问题,请大神解答

问题描述 新人问一个html的基础问题,请大神解答 想用html和css写一个类似hao123的静态版,锻炼自己.只求大致相似即可.也学了基本的知识,可是开始写确无从下手,感觉在慕课上看的全都乱了,不知道什么显示要用什么元素写!怎么办? 解决方案 善于使用IE F12或者Chrome的开发者工具.它们非常适合你模仿某个现成网站的html/css,而且它们支持直接编辑css/html,并且立刻看到效果. 解决方案二: 学习应该先从基础学-一个标签一个标签的学,基础掌握好后再临摹,会事半功倍 解决方