Math方法:最接近全局的方法
在 Math这个类中的所有方法 都不需要实例变量值。因为这些方法都是静态的,所以 你无需Math的实例。你会用 到的只有它的类本身。
java
int x=Math.round(42.2);
int y=Math.min(56,12);
int z=Math.abs(-343);
非静态方法与静态方法的差别
Java是面向对象的,但若处于某种特殊的情况下(通常是实用方法),则不需要类的实例。
static这个关键词可以标记出不需类实例的方法。一个静态的方法代表说"一种不依靠实例变量也就不需要对象的行为"。


静态的方法不能调用非静态的变量
静态的方法通过类的名称来调用,所以静态的方法无法引用到该类的任何实例变量。在此情况下,静态的方法也不会知道可以使用哪个实例变量值。
静态的方法也不能调用非静态的方法
非静态的方法做什么工作?它们通常是以实例变量的状态来影 响该方法的行为。
java
public class Duck{
private int size;
public static void main(string[]args){
System.out.println("Size is"+ getsize());//调用setSize()会用到size实例变量
System.out.println("Size of Duck is"+ size)
}
public void setsize(int s){
size =s;
public int getsize(){
return size
}
}
此程序无法编译
静态方法无法看到实例变量的状态
静态变量:
它的值对所有的实例来说都相同
java
public class Duck(
private int size;
\\此静态的duckCount变量只全在类第一次载入的时候被初始化。
private statie int duckCount=0;
public Duck()(
duckCount++i;//每当构造函教执行的时候,此变量的值就会进行递增
public void setsize(int s){
size=s;
}
public int getsize(){
return size;
}

静态变量的功能:被同类的所有实例共享的变量。
静态变量的起始动作
静态变量是在类被加载时初始化的。
静态变量会在该类的任何对象创建之前就完成初始化。
静态变量会在该类的任何静态方法执行之前就初始化。
静态的 final变量是常数
一个被标记为inal的变量代表它一旦被初始化之后就不会改动。也就是说类加载之后静志fnal变量就一直会维持原值。以Mathp.Pl为例:
java
public static fnal double PI=3.141592653589793
此变量被标记为public,因此可供各方读取。
此变量被标记为static,所以你不需要Math的实例
此变量被标记为final,因为圆周率是不变的。
此外没有别的方法可以识别变量为不变的常数(constant),但有命名惯例(naming convention)可以帮助你认出来。
常数变量的名称应该要都是大写字母!
静态 final 变量的初始化:
1.声明的时候
java
public class Foo{
Public static final int FOO_X=25;
}
2.在静态初始化程序中
java
public class Bar{
public static final double BAR_SIGN;
static{
BAR_SIGN=(double)Math.random();
final 不只用在静态变量上
final的变量代表你不能改变它的值。
final的method代表你不能覆盖掉该method。
final的类代表你不能继承该类(也就是创建它的子类)。
非静态final变量
java
class Foof{
fnal int size=3; //size将无法改变
final int whufhe;
FooF(){
whufhe42; //whuffie不能改变
void dostuff(final int x){
//不能改变x
}
void doMore(){
fnal int=7;
//不能改变z
}
}
final 的 method
java
class Poof{
final void calcWhuffie(){
//绝对不能被覆盖
}
}
final 的 class
java
final class MyMostPerfectClass{
//不能被继承
}
- 静态的方法应该用类的名称来调用,而不是用对象引用变量。
- 静态的方法可以直接调用而不需要堆上的实例。
- 静态的方法是一个非常实用的方法,它不需特别的实例变量值。
- 静态的方法不能存取非静态的方法。
- 如果类只有静态的方法,你可以将构造函数标记为private的以避免被初始化。
- 静态变量为该变量所属类的成员所共享。静态变量只会有一份,而不是每个实例都有自己的一份。
- 静态方法可以存取静态变量。
- 在Java中的常量是把变量同时标记为static和final的。
- 常量的命名惯例是全部使用大写字母。
- final 值一旦被赋值就不能更改。
- final的方法不能被覆盖。
- fnal 的类不能被继承。
- final的静态变量值必须在声明或静态初始化程序中赋值:
static {
DOG_CODE=420;
}
autoboxing:不必把primitive主数据类型与对象分得那么清楚
除了一般类的操作外,包装也有一组实用的静态方法我们在之前已经用过其中一个Integer.parseInt()。
这个方法取用String并返回给你primitivc主数据类型值.
将String转换成primitive主数据类型
java
String s="2";
int x=Integer.parseInt(s);
double d=Double.parseDouble(420.24");
boolean b=new Boolean("true").booleanValue();
将primitive主数据类型 值转换成 String
java
double d=42.5;
string doublestring=""+d;
double d42.5;
String doublestring=Double.tostring(d);
数字的格式化
%符号代表把参数放在这里
格式化语句的语法
%,d:这代表以十进制整数带有逗号的方式来表示。
%.2f:这代表以小数点后两位的方式来格式化此浮点数。
%,.2f:代表整数部分以有逗号的形式表示,小数部分以两位来格式化。

超过一项以上的参数时