数字与静态

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{
    //不能被继承
}
  1. 静态的方法应该用类的名称来调用,而不是用对象引用变量。
  2. 静态的方法可以直接调用而不需要堆上的实例。
  3. 静态的方法是一个非常实用的方法,它不需特别的实例变量值。
  4. 静态的方法不能存取非静态的方法。
  5. 如果类只有静态的方法,你可以将构造函数标记为private的以避免被初始化。
  6. 静态变量为该变量所属类的成员所共享。静态变量只会有一份,而不是每个实例都有自己的一份。
  7. 静态方法可以存取静态变量。
  8. 在Java中的常量是把变量同时标记为static和final的。
  9. 常量的命名惯例是全部使用大写字母。
  10. final 值一旦被赋值就不能更改。
  11. final的方法不能被覆盖。
  12. fnal 的类不能被继承。
  13. 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:代表整数部分以有逗号的形式表示,小数部分以两位来格式化。

超过一项以上的参数时

相关推荐
PXM的算法星球14 分钟前
Java爬虫抓取B站视频信息
java·windows·爬虫
爱康代码24 分钟前
【c语言数组精选代码题】
c语言·开发语言·数据结构
皮卡兔子屋35 分钟前
redis过期删除、内存淘汰、双写一致性---java
java·redis·mybatis
TO_WebNow41 分钟前
Python学习- 数据结构类型
开发语言·python·学习
whysqwhw42 分钟前
手机如何抓包
java
PfCoder1 小时前
C# 事件(Event)核心概念
开发语言·c#
kevindanglu1 小时前
Spring相关面试题
java·spring boot·spring
怪我冷i1 小时前
LogicFlow介绍
人工智能·学习·大模型
Suckerbin1 小时前
PHP前置知识-HTML学习
前端·学习·html
java1234_小锋1 小时前
一周学会Flask3 Python Web开发-SQLAlchemy查询所有数据操作-班级模块
开发语言·前端·python