【ThinkingInJava】8、对象的初始化为null,基本类型默认初始化为0

/**
* 书本:《Thinking In Java》
* 功能:对象的初始化为null,基本类型默认初始化为0
* 		1、在定义对象的地方。
* 		2、在类的构造器中
* 		3、在使用这些对象之前,这个叫惰性初始化
* 		4、使用实例初始化
* 文件:Bath.java
* 时间:2014年10月12日15:21:17
* 作者:cutter_point
*/
package Lesson7ReusingClasses;

import static net.mindview.util.Print.*;	//静态引用

class Soap
{
	private String s;
	Soap()	//构造函数
	{
		print("Soap()");
		s="Constructed";
	}
	public String toString() { return s; }
}

public class Bath
{
	private String s1="Happy", s2="Happy!", s3, s4;
	private Soap castille;
	private int i;
	private float toy;
	public Bath()
	{
		print("Inside Bath()");
		s3="Joy";
		toy=3.14f;
		castille=new Soap();
	}
	{ i=47; }		//这个初始化,略屌
	public String toString()
	{
		if(s4 == null)
			s4="cutter_point";
		return 	"s1="+s1+"\n"+
				"s2="+s2+"\n"+
				"s3="+s3+"\n"+
				"s4="+s4+"\n"+
				"i="+i+"\n"+
				"toy="+toy+"\n"+
				"castille="+castille+"\n";
	}

	public static void main(String[] args)
	{
		Bath b=new Bath();
		print(b);
	}
}

输出:

Inside Bath()  obj1

Soap()  obj1

s1=Happy

s2=Happy!

s3=Joy

s4=cutter_point

i=47

toy=3.14

castille=Constructed

obj1

时间: 2024-08-06 14:01:48

【ThinkingInJava】8、对象的初始化为null,基本类型默认初始化为0的相关文章

java基础 题和知识点总结, 关于String s是否默认初始化为null......,new一个对象和类静态域,是不是在内存中不是一个地方

一道笔试题 22. 下面代码的运行结果为:() import java.io.*; import java.util.*; public class foo{ public static void main (String[] args){ String s; System.out.println("s=" + s); } } A 代码得到编译,并输出“s=” B 代码得到编译,并输出“s=null” C 由于String s没有初始化,代码不能编译通过 D 代码得到编译,但捕获到 N

指针初始化为NULL的作用

关于空指针NULL.野指针.通用指针,首先说一下什么是指针,只要明白了指针的含义,你就明白null的含义了. 假设 有语句 int a=10;那么编译器就在内存中开辟1个整型单元存放变量a,我们假设这个整型单元在内存中的地址是 0x1000:那么内存0x1000单元中存放了数据10,每次我们访问a的时候,实际上都是访问的0x1000单元中的10.现在定义:int *p:                 p=&a:当编译器遇到语句int *p时,它也会在内存中给指针变量p分配一个内存单元,假设这个

如何区分对象、数组、null

我们都知道在使用typeof的时候对象.数组.null返回的都是object 那么我们怎么来区分他们呢? 我们知道万物皆对象,那么我们就利用对象的toString来区分 这样是不是就很容易区分了呢! 同时,我们也可以利用instanceof来区分数组([] instanceof Array ) 原文地址:https://www.cnblogs.com/wing-sky/p/12067880.html

第七节:将类型序列化为不同的类型以及将类型反序列化为不同的对象

.NET Framework的序列化架构相当全面,本节要讨论如何设计一个类型,本节要讨论如何设计一个类型,它能将自己的序列化或反序列化成一个不同的类型或对象.下面列举一些有趣的例子. 1.         有的类型(比如System.DBNull和System.Reflection.Missing)设计成每个AppDomain一个实例.我们经常把这些类型称为单实例类型.给定一个DBNull对象引用,序列化和反序列化它不应造成在AppDomain中创建一个DBNull对象.序列化后,返回的引用应指

什么是引用数据类型以及引用和基本数据类型的默认初始值

除8种基本数据类型以外都是引用类型,实际上java中只有两种类型引用类型和原始类型(基本数据类型).... String是引用类型变量默认初始值是null String是对象,默认值是null 对象是引用数据类型 new String()和new String("")是申明一个空字串,不是null 布尔型的初始值是false,char型的初始值是空格 private int a; private byte b; private short c; private char d; priv

List、Map、set的加载因子,默认初始容量和扩容增量

首先,这三个概念说下.初始大小,就是创建时可容纳的默认元素个数:加载因子,表示某个阀值,用0~1之间的小数来表示,当已有元素占比达到这个阀值后,底层将进行扩容操作:扩容方式,即指定每次扩容后的大小的规则,比如翻倍等. 当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离散分配则不需要重新分配,离散分配都是插入新元素时动态分配内存),要将容器原来的数据全部复制到新的内存上,这无疑使效率大大降低. 加载因子的系数小于等于1,意指  即当 元素个数 超过 容量长度*加载因子的系数 时,进

c# 获取某个对象的[公有属性]的名称,类型,值

/// <summary> /// 获取某个对象的[公有属性]的名称,类型,值 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="obj"></param> /// <returns></returns> public static string GetPropertyValue<

ArrayList、Vector、HashMap、HashTable、HashSet的默认初始容量、加载因子、扩容增量

这里要讨论这些常用的默认初始容量和扩容的原因是: 当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离散分配则不需要重新分配,离散分配都是插入新元素时动态分配内存),要将容器原来的数据全部复制到新的内存上,这无疑使效率大大降低. 加载因子的系数小于等于1,意指  即当 元素个数 超过 容量长度*加载因子的系数 时,进行扩容. 另外,扩容也是有默认的倍数的,不同的容器扩容情况不同. List 元素是有序的.可重复 ArrayList.Vector默认初始容量为10 Vector:线程

ylbtech-LanguageSamples-Nullable(可以为 null 的类型)

ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-Nullable(可以为 null 的类型) 1.A,示例(Sample) 返回顶部 “可以为 null 的类型”示例 本示例演示了如何使用可以为 null 的类型.此功能允许将值类型设置为未初始化状态(即空状态),这与将引用类型设置为 null 的方式相似. 安全说明 提供此代码示例是为了阐释一个概念,它并不代表最安全的编码实践,因此不应在应用程序或网站中使用此代码示例.对于因将此代