Help!!关于java构造块问题

问题描述

Help!!关于java构造块问题

public class Test{
public int i=print("why");
{
print("构造块");
}

private static int print(String str){
    System.out.println(str);
}

}
为什么每次实例化对象时,调用构造块的同时也会调用构造块前面的那个赋值语句?

解决方案

首先

 private static int print(String str){
    System.out.println(str);
}
这代码没有返回值,肯定有问题

public int i=print("why");和构造块没有任何联系。对象实例化时,内部成员变量都要初始化,只是这里i的值是静态方法print的返回值而已

解决方案二:

每次实例化都创建了新的对象,当然都要调用一次。每个对象的字段是独立的。

解决方案三:

应该和你的private static int print这个有关

解决方案四:

为什么调用构造块会同时调用public int i=print("why");呢?

解决方案五:

静态属性和静态块在类初始化时只执行一次,其他每次对象初始化时都要执行。

解决方案六:

public int i=print("why");因为这是全局变量啊,实例化的时候当然要调用,
private static int print(String str){
System.out.println(str);
}
这个方法里可以用 i 哦,那 i 是哪来的,当然实例化的时候要一起执行啊。

时间: 2024-07-28 15:45:50

Help!!关于java构造块问题的相关文章

java中的构造块、静态块等说明

一:这篇博客写的时候我在学校已经一个星期了,为什么又会想到写这le,因为这几天又在重新学下有关spring.myBatis的知识,其中在实例化sessionFactory的时候用到了静态块,虽然在学习Hibernate时也用到过,那时候没现在想的深入.所以就回过头来记载下吧. 最近自己突然觉得做网页好没意思啊,强烈的感觉啊,现在觉得去学习android和ios很好,因为觉得做网页都是那几个框架,一成不变啊,写来写去都是这么做.看来自己在程序这方面做不久啊. 二:先说说静态块: static{ S

javaee-java中构造块和成员变量的执行顺序是依据什么机制?

问题描述 java中构造块和成员变量的执行顺序是依据什么机制? 代码的执行不是应该和写的顺序无关吗 但是为什么构造块和成员变量的顺序不一样,执行的结果也不一样呢??? 求大神解答 解决方案 你的理解是有误的,成员变量的初始化值跟代码顺序有一定关系的.java创建对象时,对实例变量即类的非静态成员的初始化,主要在三个地方 1 成员变量定义时指定初始值 2 非静态代码块中指定初始值 3 构造函数中对成员变量指定初值值 这三种方式1,2执行先于构造函数3的执行,但是1,2方式的执行顺序与源程序中的排列

Java 并发/多线程教程(十二)-JAVA同步块

本系列译自jakob jenkov的Java并发多线程教程,个人觉得很有收获.由于个人水平有限,不对之处还望矫正! 一个Java同步块标记一个方法或一个代码块作为同步.可以使用Java同步块来避免竞态条件. java同步关键字       在Java中同步的块被标记为Synchronized关键字.Java中的同步块在某些对象上是同步的.在同一对象上同步的所有同步块只能在同一时间内执行一个线程.所有试图进入同步块的其他线程都被阻塞,直到同步块中的线程退出该块. Synchronized关键字可以

Java同步块

原文链接 作者:Jakob Jenkov 译者:李同杰 Java 同步块(synchronized block)用来标记方法或者代码块是同步的.Java同步块用来避免竞争.本文介绍以下内容: Java同步关键字(synchronzied) 实例方法同步 静态方法同步 实例方法中同步块 静态方法中同步块 Java同步示例 Java 同步关键字(synchronized) Java中的同步块用synchronized标记.同步块在Java中是同步在某个对象上.所有同步在一个对象上的同步块在同时只能被

变量 属性-JAVA初始块中的变量与类中的成员变量区别

问题描述 JAVA初始块中的变量与类中的成员变量区别 class Demo{ { a = 4; } int a = 6; public static void main(String[] args){ System.out.println(new Demo().a); } } 两个a是同一个变量吗? 解决方案 是同一个变量. 初始化块中指定的变量a的初始值每次都会被定义时指定的变量a的值所覆盖,因为定义变量时指定的初始值和初始化块中指定的初始值的执行顺序,跟它们在源程序中的排列顺序相同. 详细可

使用Java构造和解析Json数据的两种方法(详解二)_java

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON数据不须要任何特殊的 API 或工具包. 在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Json数据的方法

Spark中如何用Java构造Graph

问题描述 Spark中如何将JavaRDD转化为VertexRDD.EdgeRDD,如何用Java构造Graph? 解决方案 解决方案二:graphX貌似目前没有javaAPI

用Java构造自己的媒体播放器

一.概述 首先我们来看看构造这个媒体播放器要达到什么样的目标,确定了目标也就确定了代码量和程序的复杂程度.本文的媒体播放器要达到如下目标: 媒体播放器是一个菜单驱动的简单AWT应用. 媒体播放器包含一个"文件"菜单,文件菜单包含三个菜单项: "打开",用来打开媒体文件. "循环",是播放一次(默认),还是重复播放. "退出",退出程序. 媒体播放器可以在多种平台上运行. 媒体播放器的核心功能通过JMF(Java Media F

Java初始化块与构造器执行顺序有不明白的地方

问题描述 classRoot{static{System.out.println("Root的静态初始化块");}{System.out.println("Root的普通初始化块");}publicRoot(){System.out.println("Root的无参数的构造器");}}classMidextendsRoot{static{System.out.println("Mid的静态初始化块");}{System.out