一、格式化
1、printf格式化输出
语法:public PrintStream printf(String format, Object ... args)
占位符: %[index$][标识]*[最小宽度][.精度]转换符 。
转 换 符 |
说 明 |
示 例 |
%s |
字符串类型 |
"mingrisoft" |
%c |
字符类型 |
'm' |
%b |
布尔类型 |
true |
%d |
整数类型(十进制) |
99 |
%x |
整数类型(十六进制) |
FF |
%o |
整数类型(八进制) |
77 |
%f |
浮点类型 |
99.99 |
%a |
十六进制浮点类型 |
FF.35AE |
%e |
指数类型 |
9.38e+5 |
%g |
通用浮点类型(f和e类型中较短的) |
|
%h |
散列码 |
|
%% |
百分比类型 |
% |
%n |
换行符 |
|
%tx |
日期与时间类型(x代表不同的日期与时间转换符 |
代码示例:
public static void main(String[] args) { //将整数a输出 int a = 8976; System.out.printf("%d ",a); //将a以3位整数的形式输出 System.out.printf("%3d ",a); //将浮点数b输出 double b = 87.9856; System.out.printf("%f ",b); //将浮点数b保留两位输出 System.out.printf("%.2f ",b); //将浮点数b以4位形式输出,并且其中小数占两位 System.out.printf("%4.2f ",b); }
打印结果:
8976
8976
87.985600
87.99
87.99
2、String.format
方法参数1:public static String format(String format, Object... args)
方法参数2:public static String format(Locale l, String format, Object... args)
public static void test01() { Date now = new Date(); String str = String.format("%tF", now); System.out.println(str); /* c,星期六 十月 27 14:21:20 CST 2007 F,2007-10-27 D,10/27/07 r,02:25:51 下午 T,14:28:16 R,14:28 b, 月份简称 B, 月份全称 a, 星期简称 A, 星期全称 C, 年前两位(不足两位补零) y, 年后两位(不足两位补零) j, 当年的第几天 m, 月份(不足两位补零) d, 日期(不足两位补零) e, 日期(不足两位不补零) H, 24小时制的小时(不足两位补零) k, 24小时制的小时(不足两位不补零) I, 12小时制的小时(不足两位补零) i, 12小时制的小时(不足两位不补零) M, 分钟(不足两位补零) S, 秒(不足两位补零) L, 毫秒(不足三位补零) N, 毫秒(不足9位补零) p, 小写字母的上午或下午标记,如中文为“下午”,英文为pm z, 相对于GMT的时区偏移量,如+0800 Z, 时区缩写,如CST s, 自1970-1-1 00:00:00起经过的秒数 Q, 自1970-1-1 00:00:00起经过的豪秒 */ }
二、水仙花数
水仙花数是指一个 n 位正整数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)
public static void test02(int n) { int ge,shi,bai; for(int i=1;i<=n;i++) { ge = i%10;//个位 shi = i/10%10;//十位 bai = i/100%10;//百位 if((ge*ge*ge+shi*shi*shi+bai*bai*bai) == i) { System.out.println(i); } } }
三、鸡兔同笼
有若干只鸡兔同在一个笼子里,从上面数,有88个头,从下面数,有244只脚。问笼中各有多少只鸡和兔?
public static void test03() { /** * 鸡x * 兔y * x+y = 88 * 2*x+4*y = 244 * 用双层for循环求 */ for(int x=1;x<=87;x++) { for(int y=1;y<=87;y++) { if((x+y==88) && (2*x+4*y ==244)) { System.out.println("鸡:"+x+" ;兔:"+y); } } } }
四、素数(质数)
质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。
打印1-1000之间的素数
public static void test04() { for(int i=2;i<=999;i++) { boolean flag = true;//flag为true表示就是素数 for(int j=2;j<=i/2;j++) { if(i%j == 0) {//取余为0表示不是素数 flag = false;//flag为false表示不是素数 break;//跳出当前循环 } } if(flag == true) { System.out.println(i+"是素数"); }else { //System.out.println(i+"不是素数"); } } }
五、java中的各种修饰符
访问修饰符 |
||
名称 |
说明 |
备注 |
public |
可以被所有类访问(使用) |
public类必须定义在和类名相同的同名文件中 |
package |
可以被同一个包中的类访问(使用) |
默认的访问权限,可以省略此关键字,可以定义在和public类的同一个文件中 |
修饰符 |
||
名称 |
说明 |
备注 |
final |
使用此修饰符的类不能够被继承 |
|
abstract |
如果要使用abstract类,之前必须首先建一个继承abstract类的新类,新类中实现abstract类中的抽象方法。 |
类只要有一个abstract方法,类就必须定义为abstract,但abstract类不一定非要保护abstract方法不可 |
访问修饰符 |
||
名称 |
说明 |
备注 |
public |
可以被任何类访问 |
|
protected |
可以被同一包中的所有类访问 可以被所有子类访问 |
子类没有在同一包中也可以访问 |
private |
只能够被当前类的方法访问 |
|
缺省(无访问修饰符) |
可以被同一包中的所有类访问 |
如果子类没有在同一个包中,也不能访问 |
修饰符 |
||
名称 |
说明 |
备注 |
static |
静态变量(又称为类变量,其它的称为实例变量) |
可以被类的所有实例共享。 并不需要创建类的实例就可以访问静态变量 |
final |
常量,值只能够分配一次,不能更改 |
注意不要使用const,虽然它和C、C++中的const关键字含义一样,可以同static一起使用,避免对类的每个实例维护一个拷贝 |
transient |
告诉编译器,在类对象序列化时,此变量不需要持久保存 |
主要是因为改变量可以通过其它变量来得到,使用它是为了性能的问题 |
volatile |
指出可能有多个线程修改此变量,要求编译器优化以保证对此变量的修改能够被正确的处理 |
修饰符 |
||
名称 |
说明 |
备注 |
static |
静态方法(又称为类方法,其它的称为实例方法) |
提供不依赖于类实例的服务 并不需要创建类的实例就可以访问静态方法 |
final |
防止任何子类重载该方法 |
注意不要使用const,虽然它和C、C++中的const关键字含义一样 可以同static一起使用,避免对类的每个实例维护一个拷贝 |
abstract |
抽象方法,类中已声明而没有实现的方法 |
不能将static方法、final方法或者类的构造器方法声明为abstract |
native |
用该修饰符定义的方法在类中没有实现,而大多数情况下该方法的实现是用C、C++编写的。 |
参见Sun的Java Native接口(JNI),JNI提供了运行时加载一个native方法的实现,并将其于一个Java类关联的功能 |
synchronized |
多线程的支持 |
当一个此方法被调用时,没有其它线程能够调用该方法,其它的synchronized方法也不能调用该方法,直到该方法返回 |
六、什么是重载
同名的方法不同参数(类型或个数不同),与返回值没有关系,是多态的一种体现。
public void getSum(int a) { System.out.println("和为:"+a); } public void getSum(int a,int b) { System.out.println("和为:"+a+b); } public void getSum(int a,int b,int c) { System.out.println("和为:"+a+b+c); }
七、静态方法有什么特点
a)、使用关键字static
b)、静态的成员属于类,一般用类名直接调用,无需实例化
c)、非静态可以直接调用静态,静态需通过对象名调用非静态
d)、静态是共享的,非静态是独享的