数字与静态

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:代表整数部分以有逗号的形式表示,小数部分以两位来格式化。

超过一项以上的参数时

相关推荐
追星星の人5 小时前
java web项目(eclipse软件)全流程备份
java·servlet
OxYGC5 小时前
[工程] PHP2Shell 漏洞解析:两条 PHP 内核 RCE,为什么应用层的防护全部失效
android·开发语言·php
小徐不徐说5 小时前
数据库存储基础:理解表结构、主键、事务与 BLOB
开发语言·数据库·c++·qt·程序设计
草莓熊Lotso5 小时前
【C++ 基于微服务的即时通讯系统】网关基建:cpp-httplib 与 WebSocketpp 从入门到实战
linux·开发语言·数据库·c++·redis·微服务·云原生
李纲明5 小时前
WordPress 媒体库上传失败或一直转圈:先核 PHP 上传限制与目录权限,再查安全插件与对象存储
运维·开发语言·安全·php·wordpress·媒体库·devdiy
文丑颜不良啊5 小时前
LeetCode1461~1480题目解析
java·leetcode
2301_7807896613 小时前
跨平台适配!SDK 游戏盾兼容全终端游戏场景
java·网络·ddos
第九序言T13 小时前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
学长毕设14 小时前
基于springboot的食品仓库管理系统
java·spring boot·后端
步行cgn14 小时前
FormHttpMessageConverter 详解:Spring MVC 中表单数据的读写转换器
java·spring·mvc