Head First Java学习笔记(10):数字与静态

Math方法

Java中不存在全局的对象,但有些方法不需要依靠实例变量值,,如Math这个类中的取绝对值方法,它只依赖于传入的参数,而不依赖于实例变量的状态。因此,调用Math中的方法时,无需创建Math的实例,实际上编译器也不允许创建Math的实例,因为Math的构造函数被标记为私有的。
在Math这个类中的所有方法都不需要实例变量值,因为这些方法都是静态的。
Math在的一些方法:

Math.random():返回介于0.0~1..0之间的双精度浮点数。
Math.abs():返回双精度浮点数类型参数的绝对值。
Math.round():返回四舍五入之后的整形或长整型值。
Math.min():返回两参数中较小的那一个。
Math.max():返回两参数中较大的那一个。

静态方法

非静态方法中,实例变量的值会影响到方法的行为。非静态方法由引用变量的名称调用。
static关键词可以标记出不需要类实例方法。静态方法即“一种不依靠实例变量也就不需要对象的行为”。非静态方法以累的名称调用。

1.静态的方法不能调用非静态的变量。
2.静态变量也不能调用非静态的方法。

静态变量

1.静态变量是共享的。
2.同一类所有的实例共享一份静态变量。
3.静态变量会在该类的任何对象创建之前就完成初始化。
4.静态变量会在该类的任何静态方法执行之前就初始化。

final

1.静态的final变量是常数:一个被标记为final的变量一旦被初始化后就不会改变。常数变量的名称应该都是大写字母。。

静态初始化程序是一段在加载类时会执行的程序代码,它会在其他程序可以使用该类之前就执行,所以适合放静态final变量的起始程序。
class zuchongzhi {
	final static int PI;
	static {
		PI=3.15159
	}
}
//静态final变量的初始化
//方法一:声明的时候
public class Boo{
	public static final int BOO_X = 25;
}

//方法二:静态初始化程序
public class Boo{
	public static final int BOO_X ;
	static {
		BOO_X = 25;
	}
}

2.final也可以用来修饰非静态的变量,这代表该变量的值不能变动。
3.final也可以用来防止方法的覆盖或创建子类。

包装

Java 5.0之前,要以对象方式来处理primitive主数据类型时,就必须将其包装起来。

包装值: int i = 288;
	    Integer iWrap = new Integer(i);
解开包装:int unWrapped = iWrap.intValue();

从Java 5.0开始加入的autoboxing功能能自动将primitive主数据类型转换成包装过的对象。

//无autoboxing
public class Boo{
	ArrayList foo = new ArrayList();
	foo.add(new Integer(5));
	Integer one = (Integer) foo.get(0);
	int intOne = one.intValue();
}

//有autoboxing
public class Boo{
	ArrayList<Integer> foo = new ArrayList<Integer>();
	foo.add(5);
	int One = foo.get(0);
}

除了一般的类操作外,包装也有一组实用的静态方法,如Integer.parseInt()方法能够取用String并返回primitive主数据类型值。

数字的格式化

Java 5.0后,可以利用Formatter这个类提供的方法来进行数字的格式化。

将数字以带逗号的形式格式化
String s = String.format("%, d", 1000000000);
结果:1,000,000,000

格式化结构: 1.格式指令
2.要格式化的值

%,d:以十进制整数带逗号格式化。
%.2f:以小数点后两位格式化。
%,.2f:整数部分以有逗号的方式,小数部分以两位来格式化。

格式化说明的格式:唯一的必填项目是类型。

%[argument number] [flags] [width] [.precision] type
argument number:指定要格式化的是哪一个值
flags:特定类型的特定选项
width:最小字符数
.precision:精确度
type:类型

日期的格式化

完整的日期与时间:%tc
String.format("%tc", new Date());

只有时间:%tr
String.format("%tr", new Date());

周、月、日:%tA %tB %td
Date today = new Date();
String.format("%tA,%tB,%td", today,today,today);
不用重复给参数的写法:
Date today = new Date();
String.format("%tA,%<tB,%<td", today);

Calendar API

要取得当前的日期时间就用Date,其余功能可以从Calendar上面找。

Calendar cal = Calendar.getInstance();
cal.set(2014, 1, 7, 15, 40);
        
long day1 = cal.getTimeInMillis();
day1 += 1000*60*60;
        
cal.setTimeInMillis(day1);
cal.add(cal.DATE, 35);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值