作为本人的第一篇博客,暂时总结一下自己开学这两周学习了什么知识,有什么心得与体会,因为这学期是正式的进行软件工程专业课的学习,所以除了深入掌握Java外,还要把高三毕业暑假没学完的Python也完全啃下来。
刚刚开学非常闲,除了上课以外基本没什么事,每天自然有很多时间拿来学习,这篇博客也算是一次大的总结,以后会在掌握的知识达到一定程度后再写下一篇博客。
另一方面,写博客并不全是为了记录自己的学习过程,项目等一些别的代码我都会放到自己的的github上,下面贴一下网址,随便看看,大家笑一笑就好。
话不多说,也没什么可以说的,先从Java开始,一边复习《Head First Java》一边写博客
Java
关于静态
静态是Java中一个非常重要且基础的概念。很多东西都用到了静态,比如Math这个类就是静态类,它不需要被初始化就能够使用,因此在调用静态类的方法时,不需要用引用变量的名称来调用方法
可以直接使用来调用
Math.min();
Math.max();
Math.abs ; //*取绝对值*
而普通类的调用则是
className a = new className();
a.method();
静态的方法不能调用非静态的变量,这是因为静态的方法和变量在类加载的时候也会一起加载,不依赖任何非静态的对象。
另一方面,静态的方法不能调用非静态的方法,就算该方法没有用到实例变量也不行,因为不能保证日后不会对其进行修改,也不能保证在继承的时候若是覆盖了方法的话不会造成错误。
静态变量对整个类来说都是共享的,唯一的变量。静态变量会在静态方法执行之前就被初始化
静态的标识符时static,还有另一个常用的标识符叫final。
final的变量代表你不能改变它的值,final的method代表你不能覆盖掉该method,final的类代表你不能继承这个类。
对final变量的初始化有两种方法
public class test{
public static final int TEST =25;
}
//或者
public class test{
public static final int TEST;
static{
TEST = (double)Math.random();
}//这一段会在类被加载时执行
}
如果没有对其进行初始化的话,编译器会报错
test.java: 1: variable TEST might not have been initialized
primitive主数据类型的包装
primitive主数据类型有8种,分别是Boolean,Character,Byte,Short,Integer,Long,Float,Double。曾经使用主数据类型的时候需要把他们autoboxing(自动包装)起来,现在不用了。
autoboxing似乎不是一个非常实用的东西,不过它无处不在
void takeNumber(Integer i){}
int giveNumber(){
return x;//x既可以是Integer也可以是int
}
if(bool){}//bool既可以是boolean对象也可以是boolean值
Integer i = new Integer(42);
i++
主数据类型之间可以相互转化
String s = "1";
int x = Integer.parseInt(s);
s = Integer.toString(x);
//也可以
double d = Double.parseDouble("1.12");
s = Double.toString(d);
//对于boolean对象,这里直接贴boolean的源码
public static boolean parseBoolean(String s){
return ((s != null) && s.equalsIgnoreCase("true");
}
public Boolean(String s){
this(parseBoolean(s));
}
public Boolean (boolean value){
this.value = value;
}
格式化format()
format是java进行格式设定的方法,只需要调用静态的
String.format();
就可以实现。这里主要解析一下format的结构。
format("%,.2f",476578.09876)
//输出为476,578.10
%表示这里有一个参数,逗号表示用带有逗号的方式输出,.2f表示以保留小数点后两位的方式来进行格式化输出,四舍五入。
跟在%最多有五个部分
部分 | 作用 | 顺序 |
---|---|---|
[argument number] | 如果需要格式化的参数超过一个以上,就可以用这个来指定是哪一个参数 | First |
[flags] | 特定类型的特定选项,比如数字要加逗号或者正负号 | Second |
[width] | 最小的字符数,不满足会自动补零 | Third |
[.precision] | 精确度,注意前面有圆点符号 | Fourth |
type | 一定要指定参数类型,唯一的必填项 | Fifth |
%d指定的是int,%f必须是浮点数,%x必须是byte,short,int,long,BigInteger,%c和%x相似,但不包括BigInteger
下面是format的一个例子
String s = String.format("The rank is %,d out of %,.2f", one, two);
//The rant is 20,456,654 out of 100,567,890.25
format使用的是可变参数列表,可以传入任意个参数。
同时,日期也可以format,下面列举几个方法。
//import java.util.Date
String.format("%tc", new Date());
//周日 3月 10 21:11:44 GMT+08:00 2019
09:11:44 下午
String.format("%tr", new Date());
//09:11:44 下午
Date today = new Date();
String.format("%tA,%<tB,%<td",today);
// '<'表示使用同上的参数,但不用写出来
//星期日,三月,10
在实际操作中,Calendar这个API具有更好的用处,但是java常用API会单独在另一篇博客中提到,这里就不多说了。
网友评论