本章主要讲了静态变量、静态方法,final关键词。以及介绍了怎么对数字和日期进行格式化输出。这里对这些内容进行了整理。本章还介绍了java.util.Date和java.util.Calendar来操作日期,但是这个直接看API就比较清楚,这里就不写了。
 
static
 
static标记过的,与类的实例对象无关
 
静态方法:
使用static关键词来标记静态方法。有些方法不需要用到类的实例变量,静态变量的代表“一种不依靠实例变量也就不需要对象的行为”。Math就是一个静态方法
 
调用静态方法:类名.方法名(参数)
 
例如:
public class Math{
     public static int min(int a,int b){
          //返回a和b较小的值
     }
}
 
调用时不需要实例化,直接Math.min(12,23)就可以
 
静态变量:
使用static关键词来标记的变量,例如private static int num=0;
 
一些注意点:
1.静态方法不能调用实例变量(因为静态方法无关特定实例,所以它不知道调用的是哪个实例的实例变量)
2.静态方法不能调用非静态的方法,但是可以调用静态变量
3.使用引用变量也可以调用静态方法,但实际解析器也是会先解析出原来的类,不建议这么去引用静态变量
4.静态变量是共享的,只有在类第一次载入时才被初始化,同一类的所有实例变量共享一份静态变量(每个实例看静态变量值都是一样的)。实例变量每个实例一个;静态变量每个类一个
5.静态变量会在该类的任何对象创建之前就完成初始化;会在该类的任何静态方法执行之前就初始化
6.如果静态变量没有赋值,会根据该变量类型来决定默认值。
7.静态变量放在静态变量区(存放常量、静态变量)。java内存分为4个区,静态变量区和堆栈、代码区是并列的,不是从属关系
8.静态方法放在内存的方法区中
9.可以用import导入静态的方法,这样调用静态方法时可以少些一些内容,但这样容易产生名称冲突(容易重名)
 
final
 
final修饰过的,不能改变内容
 
静态的final变量是常量,不能更改内容
1.常量命名规范用大写,用下划线分隔
2.常量必须赋值,有两种方式。直接用=,或final定一后通过static{}来在静态初始化时赋值
例如:
1.public static final double PI=3.1415926
2.public static final double PI;
  //下面这段会在类加载时执行
   static{
       PI=3.1415926
   }
 
final修饰过的所有内容都不能被修改,也可以被用在方法、实例变量、类上
1.final变量不能被更改值(final int size=3)
2.final方法不能被覆盖重写(final void calcWhuffie(){})
3.final的class不能被继承(final class MyMostPerfectClass{})
 
 
数值操作
ArryList只能放入对象,不能直接放入某个primitive类型。所以需要对primitive数据类型进行包装再传递,包括从ArrayList中取值时,也需要解开包装
primitive类型在JAVA5之前需要自己进行包装和解包,java5之后primitive类型会自动进行包装。
 
Math的方法就是一些静态方法,例如Math.abs()是取绝对值。
 
格式化
使用String的format()方法来进行格式化。格式化主要由两部分组成:格式化的指令、要格式化的值
 
1.格式化指令:format()第一个参数中%及后面的语法(format的第一个参数是要输出的字符串内容,要进行参数化的地方使用%来替代)
 
数字格式化指令:
最多会有5部分(不包括%),下面[]中都是可选择的项目,只有%和type是必选的,格式化的顺序是有规定的,必须按照下面的顺序来
%[argument number][flags][width][.precision]type
 
argument number 如果有多个参数需要进行格式化,可以用来选择格式化哪一个
flags 针对type的特定选项,例如数字的”,”,用来分割整数部分(例如10000变为10,000)
width 最小的字符数个数限制,输出字符可以超出这个宽度,如果小于width会自动补全
.precision 精确度,前面有一个点。例如.2f是取小数点后两位
type 要格式化的参数类型,例如d为整数,f为浮点数
 
日期格式化指令:
%tc 完整的日期与时间(String.format(“%tc”,new date());)
%tr 只显示时间
%tA 只星期几
%tB 返回月份
%td 返回日
 
如果连续使用相同的参数,可以使用%<来告诉格式化程序重复利用上一个用过的参数
例如:
Date today=new Date();
String.format(“%tA,%<tB,%<td”,today);
 
2.要格式化的内容:format()后的第二个、第三个、第N个参数。用来放到前面的%格式化指令里
 
格式化例子如下:
String s=String.format(“The number is %,.2f”,476578.09876);
输出结果s为The number is 476,578.09
 
 
 

java基础五 [数字与静态](阅读Head First Java记录)的更多相关文章

  1. java基础九[网络与线程](阅读Head First Java记录)

    网络socket连接 Java API的网络功能包(java.net)已经将底层的TCP连接等都封装好了,我们只需要通过Socket对象来建立客户端和服务器的连接,然后客户端能向服务器发送请求,并接收 ...

  2. Java基础教程(20)--数字和字符串

    一.数字   在用到数字时,大多数情况下我们都会使用基本数据类型.例如: int i = 500; float gpa = 3.65f; byte mask = 0xff;   然而,有时候我们既需要 ...

  3. 面渣逆袭:Java基础五十三问,快来看看有没有你不会的!

    大家好,我是老三, 面渣逆袭 系列继续.这节我们回到梦开始的地方--Java基础,其实过了萌新阶段,面试问基础就问的不多,但是保不齐突然问一下.想一下,总不能张口高并发.闭口分布式,结果什么是面向对象 ...

  4. java基础(五)-----关键字static

    在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个“伪全局”的概念,在Java中static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,当然也可以修饰代码块. ...

  5. java基础学习之"堆" "栈" "静态存储区" "方法区"

    引用部分 java中堆栈(stack)和堆(heap)(还在问静态变量放哪里,局部变量放哪里,静态区在哪里.....进来) Java堆.栈和常量池以及相关String的讲解 等我看完"深入理 ...

  6. Java基础五(方法)

    今日内容介绍1.方法基础知识2.方法高级内容3.方法案例 ###01方法的概述 * A: 为什么要有方法 * 提高代码的复用性 * B: 什么是方法 * 完成特定功能的代码块. ###02方法的定义格 ...

  7. java基础 五 java注释 关键字 标识符

    一:java有三大注释: 1:当行注释: 使用://开始进行注释. 2:多行注释: /**/  在/*和*/之间的内容 会被编译器忽略. 3:文档注释: /***/  /**注释信息*/和多行注释是一 ...

  8. Java基础(五) final关键字浅析

    前面在讲解String时提到了final关键字,本文将对final关键字进行解析. static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提 ...

  9. Java基础(56):Java---Assertion的试用(华为OJ里的Java题目的用例检测就是用的断言)

    一.assertion的意义和用法 J2SE 1.4在语言上提供了一个新特性,就是assertion功能,它是该版本在Java语言方面最大的革新. 从理论上来说,通过 assertion方式可以证明程 ...

随机推荐

  1. BASIC-21_蓝桥杯_Sine之舞

    思路: 先根据例子找出规律,列出递归要打印的数据; 示例代码: #include <stdio.h> int n = 0; void dg(int x){ int i = 0; if (x ...

  2. unittest框架进坑系列_(含selenium数据分离的坑)

    1.测试用例的执行顺序 有默认的顺序的,不是按你自己的排列执行,注意. 进坑原因,没有先执行制造变量的测试用例,导致其他用例无法找到变量值 2.数据分离的坑 在控制层 有函数嵌套,2个函数都必须带se ...

  3. testNG断言

    https://junit.org/junit4/javadoc/latest/org/junit/Assert.html#assertThat 断言:Hamcrest - Matchers 对象: ...

  4. 部署mariadb高可用

    上传文件到opt目录下 Galera能够实现MySQL/MariaDB数据库的主主复制和多主复制等模式,这些复制模式都是同步进行的,同步时间非常短. 每一个节点都可以同时写入和读取,当某一节点发生故障 ...

  5. tp5模型笔记---多对多

    关联模型 一对一:HAS_ONE  以及对应的BELONEGS_TO 一对多:HAS_MANY 以及相对的BELONGS_TO 多对多:BELONGS_TO_MANY 步骤: 第一:创建Users模型 ...

  6. eclipse如何调试jar包源码

    转载至:http://blog.csdn.net/niclascage/article/details/47451967 引子 深入学习开源代码很多时候都需要去调试别人的jar包.当然如果你能拿别人的 ...

  7. IntelliJ IDEA小问题解决方法------(持续更新)

    1:IDEA运行时报错提示“找不到或无法加载主类”:在确保IDEA开发环境无误后->file->invalidate Cache/restart,之后再重新build.问题解决. 2.如何 ...

  8. g++多文件编译

    头文件:A.h void test(); 源文件:A.cpp #include <iostream> #include<thread> #include<chrono&g ...

  9. 【BZOJ】1013 [JSOI2008]球形空间产生器sphere(高斯消元)

    题目 传送门:QWQ 分析 高斯消元就是个大暴力.... 代码 #include <bits/stdc++.h> using namespace std; ; ; int n; doubl ...

  10. Docker集群管理(二)—— docker+swarm+etcd+shipyard

    引言 前一篇介绍如何简单的搭建一个可视化管理的docker集群,本篇将在此基础之上引入etcd发现服务. 目的 使用etcd发现服务解决swarm内置发现服务的不稳定问题.etcd采用raft算法,这 ...