java学习笔记(持续更新)

JAVA 的类(外部类)有 2 种访问权限: public、default。

而方法和变量有 4 种:public、default、protected、private。

其中默认访问权限和 protected 很相似,有着细微的差别。

 public 意味着任何地方的其他类都能访问。

 default 则是同一个包的类可以访问。

 protected 表示同一个包的类可以访问,其他的包的该类的子类也可以访问。

 private 表示只有自己类能访问。

修饰符:abstract、static、final

 

 abstract: 表示是抽象类。 使用对象:类、接口、方法

 static: 可以当做普通类使用,而不用先实例化一个外部类。(用他修饰后,就成了静态内部类了)。 使用对象:类、变量、方法、初始化函数(注意:修饰类时只能修饰 内部类 )

 final: 表示类不可以被继承。 使用对象:类、变量、方法

 

String 类是不可改变的解析,例如:

String s = "Google";

System.out.println("s = " + s);

 

s = "Runoob";

System.out.println("s = " + s);

输出结果为:

Google

Runoob

从结果上看是改变了,但为什么门说String对象是不可变的呢?

原因在于实例中的 s 只是一个 String 对象的引用,并不是对象本身,当执行 s = "Runoob"; 创建了一个新的对象 "Runoob",而原来的 "Google" 还存在于内存中。

http://www.runoob.com/wp-content/uploads/2013/12/string-no-modify.png

格式化数

1.对整数进行格式化:%[index$][标识][最小宽度]转换方式

格式化字符串由4部分组成,特殊的格式常以%index$开头,index从1开始取值,表示将第index个参数拿进来进行格式化,[最小宽度]的含义也很好理解,就是最终该整数转化的字符串最少包含多少位数字。剩下2个部分的含义:

标识:

  •  '-' 在最小宽度内左对齐,不可以与"用0填充"同时使用
  •  '#' 只适用于8进制和16进制,8进制时在结果前面增加一个0,16进制时在结果前面增加0x
  •  '+' 结果总是包括一个符号(一般情况下只适用于10进制,若对象为BigInteger才可以用于8进制和16进制)
  •  ' ' 正值前加空格,负值前加负号(一般情况下只适用于10进制,若对象为BigInteger才可以用于8进制和16进制)
  •  '0' 结果将用零来填充
  •  ',' 只适用于10进制,每3位数字之间用","分隔
  •  '(' 若参数是负数,则结果中不添加负号而是用圆括号把数字括起来(同'+'具有同样的限制)

转换方式:

d-十进制 o-八进制 x或X-十六进制

上面的说明过于枯燥,我们来看几个具体的例子。需要特别注意的一点是:大部分标识字符可以同时使用。

System.out.println(String.format("%1$,09d", -3123));

System.out.println(String.format("%1$9d", -31));

System.out.println(String.format("%1$-9d", -31));

System.out.println(String.format("%1$(9d", -31));

System.out.println(String.format("%1$#9x", 5689));

//结果为:

//-0003,123

// -31

//-31

// (31)

// 0x1639 

2.对浮点数进行格式化:%[index$][标识][最少宽度][.精度]转换方式

我们可以看到,浮点数的转换多了一个"精度"选项,可以控制小数点后面的位数。

标识:

  • '-' 在最小宽度内左对齐,不可以与"用0填充"同时使用
  • '+' 结果总是包括一个符号
  • ' ' 正值前加空格,负值前加负号
  • '0' 结果将用零来填充
  • ',' 每3位数字之间用","分隔(只适用于fgG的转换)
  • '(' 若参数是负数,则结果中不添加负号而是用圆括号把数字括起来(只适用于eEfgG的转换)

转换方式:

  • 'e', 'E' -- 结果被格式化为用计算机科学记数法表示的十进制数
  • 'f' -- 结果被格式化为十进制普通表示方式
  • 'g', 'G' -- 根据具体情况,自动选择用普通表示方式还是科学计数法方式
  • 'a', 'A' -- 结果被格式化为带有效位数和指数的十六进制浮点数

3.对字符进行格式化:

对字符进行格式化是非常简单的,c表示字符,标识中'-'表示左对齐,其他就没什么了。