对象方法和堆栈的关系
- 对象及permietive变量生存在堆中,方法调用和变量生存在堆中
- 方法会被堆在一起,被调用的方法在栈顶
构造函数
public class className(){
public className(){...};//构造函数
}
和c++一样;
- 抽象的类也一样有构造函数,会在子类调用时使用构造函数
- super()为调用父类构造函数,必须写在子类构造函数的第一句,可省略,不可重复调用构造函数
垃圾收集器 GC(Garbage Collection)
- 引用永久性离开它的范围
- 引用被赋值到其它对象上
- 直接将引用设定为null
静态方法
- 不需要实例的方法;对方法使用static
public static int function1();
调用时Maht.min(1,2)
*静态方法不能调用非静态方法和非静态变量
静态变量
- 静态变量是共享的,一个类只有一个
- 类被加载时即初始化
final
- 写法:
final int a =10;
final class className{...};
class className{
final type function();
}
- 对于变量 表示变量的值不可改变
- 对于方法 表示不能被方法不能被覆盖,而c++不同,对于c++:
- 对于类 final表示不能继承 c++的final一样
- c++11 增加了final 用法和java的一样 对类和方法都有效
写法区别于java 作为后缀修饰
void virtual funtion() final (){...};
class className final{};
对于变量 可使用const代替
补充:
int GetY() const; //该函数为只读函数,不允许修改其中数据成员的值
cosnt int* GetPosition(); //表示返回值是常量
primitive 主数据类型的包装
- 主数据类型名称包括:Boolean,Character,Byte,Short,Integer,Long,Float,Double
- autoboxing:自动将primitive主数据类型转换为包装过的对象,反之亦成立。
- 包装类型的方法:
- string 转为 int:
Integer.parseInt()
- double 转为 String:
Double.toString()
数字的格式化
- String,format(“%,d”,1000);//与c中print的格式差不多
- 日期:
需要引入包:import java.util.Date;
完整日期:String.format("%tc",new Date());
只有时间:Stirng.format("%tr",new Date());
周月日:String.format("%tA,%tB,%td",today,today,today);
=String.format("%tA,%<tB,%<td",today) //“<”表示重复使用之前的参数
- Calendar API
方法:
1.add(int fileld,int amount) //加减时间的值
2.add(int field) //取出指定字段的值
3.getInstance() //返回Calendar,可指定地区
4.getTimeMills() //以毫秒返回
5.roll(int field,boolean up) //加减时间值,不进位
6.set(int field,int value)
7.set(year,month,day, hour,minute) //设定完整时间
8.setTimeMillis(long millis) //以毫秒指定时间
关键字段
DATE;HOUR;MILLISECOND;MINUTE;MONTH;YEAR
静态import
import static java.lang.Math.*;
tan(60);//原为Math.tan()
作用在于偷懒