java笔记数字与静态

Math方法:
最接近全局的方法
在Math这个类中的所有方法都不需要实例变量值,因为这些方法都是静态的,所以你无需Math的实例,你会用到的只有它本身;

int x=Math.round(42.2);
int y=Math.min(56,12);
int z=Math.abs(-322);
硬创建Math的实例
Math mathObject=new Math();//ERROR;

非静态方法与静态方法的差别
java是面向对象的,但若处于某种特殊的情况下,通常是实用方法,则不需要类的实例,static这个关键词可以标记不需要实例的方法。

以类的名称调用静态的方法

Math.min(88,86);

以引用变量的名称调用非静态的方法

Song t2=new Song();
t2.play();

带有静态方法的含义
带有静态方法的类(不一定)不打算被初始化;
抽象的类不能被初始化,但你也可以用私有的构造函数来限制非抽象类被初始化,被标记为private的方法代表只能被同一类的程序所调用,构造函数也是如此,这也是Math如何防止被初始化的方法,它让构造函数标记为私有,所以你无法创建Math的实例,编译器会知道你不能存取这些私有的构造函数。并不是说有一个或多个静态的方法的类就不能被初始化。事实上,只要有main()的类就算有静态的方法。
静态的方法不能调用非静态的变量
如果你尝试在静态的方法内使用实例变量,编译器会认为:我不知道你说的是哪个实例的变量,静态的方法是不知道堆上有哪些实例的。

无法编译
public class Duck{
  private int size;
  public static void main(String[] args){
  Stystem.out.println("size of duck is"+size);//size 不知道是哪一个Duck的,也不知道堆上是否有Duck
  public void setSize(int s){
    size=s;
    }
    public int getSize(){
    return size;
    }
   }

静态的方法也不能调用非静态的变量

无法编译
public class Duck{
  private int size;
  public static void main(String[] args){
    System.out.println("Size is"+getSize());//调用getSize()会需要用到size实例变量,到底要谁的
    }
    public void setSize(int s){
    size=s;
    }
    public int getSize(){
    return size;
    }
 }

静态变量:它的值对所有的实例来说都相同

静态变量是共享的,同一类所有的实例共享一份静态变量;
实例变量:每个实例一个
静态变量:每个类一个
静态变量会在该类的任何对象创建之前就完成初始化;
静态变量会在该类的任何静态方法执行之前就初始化
就是在类的任何静态方法执行之前就初始化;

如果没有给静态变量赋初值,它就会被设定默认值,primitive主数据类型整数默认值为0,浮点数默认值为0.0,boolean是false,对象引用为null;
静态变量也是通过类的名称来存取
静态变量final常数
一个被标记为final的变量代表它一旦被初始化之后就不会改动

public static final double PI =3.141592653589793

此变量被标记为public,因此可供各方读取;
此变量被标记为static,所以你不需要Math的实例;
此变量未标记为final,因为圆周率是不变的,此外没有别的方法可以识别变量为不变的常数,但有命名惯例可以帮你认出来
常数变量的名称应该都是大写字母;
在这里插入图片描述

final的变量代表不能改变它的值
final的method代表不能覆盖掉该method
final的类代表不能继承该类(也就是创建它的子类)
如果类只有静态的方法,可以将构建函数标记为private的以避免被初始化。(静态的变量都会被初始化)
在java中的常量是把变量同时标记为static和final的
非静态的方法可以读取静态的变量,但是不可以调用该类静态的方法或静态的变量

Math的方法
Math.random():
返回介于0.0~1.0之前的双精度浮点数
double r1=Math.random();
int r2=(int)(Math.random()*5);
Math.abs():
返回双精度浮点数类型参数的绝对值。这个方法有覆盖的版本,因此传入整型会返回整型,传入双精度浮点数会返回双精度浮点数
int x=Math.abs(-240);//240
double d=Math.abs(240.45);//240.45
Math.round();
根据参数是浮点型或双精度浮点数返回四舍五入之后的整型或长整型值
int x=Math.round(-24.8f);//-25
int y=Math.round(24.45f);//24
Math.min();
返回两参数中较小的那一个。这有int,long,float或double的覆盖版本;
int x=Math.min(24,240);//24
double y=Math.min(90876.5,90876.49);//90876.49
Math.max()
返回两参数较大的那一个。这有int,long,float或double的覆盖版本;
int x=Math.max(24,240);//240
double y=Math.max(90876.5,90876.49);//90876.5
prinvate主数据类型的包装当你需要以对象来处理primitive主数据类型时,就要把它包装起来,java 5.0 版本以前必须

ERROR
int x=32;
ArrayList list=new ArrayList();
list.add(x);
//除非是java 5.0及其以上版本的
包装值
int i=288;
Integer iWrap=new Integeer(i);
//传入primitive主数据类型给包装的构造函数
解开包装
int unWrappes=iWrap.intValue();
//所有的包装类都有类似的方法





数值运算
在使用primitive主数据类型作为运算子的操作中以包装类型来替换。这代表可以对Integer的对象作递增运算

Integer i=new Integer(42);
i++;
Integer j=new Integer(5);
Integer k=j+3;


赋值
可以将包装类或primitive主数据类型赋给声明或相对应的包装或primitive主数据类型;
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值