本帖最后由 小石姐姐 于 2017-12-22 15:41 编辑
JavaEE就业班学习笔记
一个包里 所有类名 是唯一的,;
类的访问
相同包下的类可以直接访问,
不同包下的类:
类的全名: 包名. 类名
使用关键字 import将类导入
权限修饰符
public : 相同包下不同类,不同包下的类
private ; 私有,只能在当前类下使用(不能访问子类)
不写 : 只能当前包下所有类
protected ; 相同包下不同类..还可以有不同包下继承产生的子类
定义在类中的接口默认是
1 成员内部类
A:定义格式
class 外部类 {
修饰符 class 内部类 {
//其他代码
}
}
B:访问方式
外部类名.内部类名 变量名 = new 外部类名().new 内部类名();
在内部类当中,可以直接访问外部类的成员,包括私有成员
匿名内部类:
// 匿名内部类是创建某个类型子类对象的快捷方式
格式
new 类/接口( ){
如果是创建了继承这个类的子类对象,我们可以重写父类的方法
如果是创建了实现这个接口的子类对象,我们必须要实现该接口的所有方法
}
interface Inner4{
public void function();
}
class Outer4{
public void method(){
// 这里得到的是 子类实现类的对象.为了多次利用 通过多态向上转型,即Inner4 i来接收
Inner4 i=new Inner4(){
@Override
public void function() {
System.out.println("nihao");
}
}; //.function();
i.function();
i.function();
匿名内部类的应用场景
method(
new Animal(){
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
);
}
public static void method(Animal a){
a. eat();}
通过Animal对象来调用eat方法但是,animal是接口不能创建对象,这里就需要用多态 通过Animal子类或者实现类的对象向上转型得到,
//匿名内部类:
// 匿名内部类是创建某个类型子类对象的快捷方式
public class Lianxi4 {
public static void main(String[] args) {
Outer4 o=new Outer4();
o.method();
}
}
interface Inner4{
public void function();
}
//创建一个类
class Outer4{
public void method(){
// 这里得到的是 子类实现类的对象.为了多次利用 通过多态向上转型,即Inner4 i来接收
Inner4 i=new Inner4(){
@Override
public void function() {
System.out.println("nihao");
}
}; //.function();
i.function();
i.function();
}
}
//成员内部类
public class Lianxi2 {
public static void main(String[] args) {
//成员内部类被static 修饰时就不用再创建外部类的对象 new Outer2()
/*Outer2.Inner2 i=new Outer2.Inner2();
i.function(); 构造对象 */
Outer2.Inner2.function(); //内部类的完整类名,来直接调方法
}
}
class Outer2{
public void method(){
//外部类可以调用内部类生成对象
Inner2 i=new Inner2();
}
static class Inner2{
public static void function(){
System.out.println("静态内部类方法");
}
}
}
//局部内部类 再方法中,除了方法就无法调用
public class Lianxi3 {
public static void main(String[] args) {
Outer3 o=new Outer3();
o.method();
}
}
class Outer3{
public void method(){
int nun=10;
class Inner{
public void function(){
System.out.println("局部内部类方法");
}
}
}
public void outer4Test(){
//Inner i=new Inner(); 错误
System.out.println("外部类成员方法");
}
} 1 toString 输出一个对象就是默认输出这个对象的to String ()方法
类名直接调用, 说明方法是静态方法
//方式1 通过Object类的getClass()方法获取
Teacher t=new Teacher();
Class clazz=t.getClass();
System.out.println(clazz); //包含了全路径的类名
//方法2 通过类名调用属性class来获
Class clazz2=Teacher.class;
注意
//方法3 通过Class类的静态方法forName()来获取
Class clazz3=Class.forName("com.itheima_02.Teacher");
(全路径的类名)
右键用 Copy Qualified name 在类名上直接复制
方法3通过配置文件获取,更为灵活
2 说明我们输出一个对象就是默认输出这个对象的toString()方法
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
由于toString()方法返回的结果是内存地址,com.itheima_01.Student@737951b0
而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写toString()
一个类创建的所有的对象的字节码对都是相同的
字节码对象代表了这个类的定义.通过字节码对象可以访问这个类的所有信息
equals 直接用比较的是地址值
Person p = new Person("zhangsan",18);
Person p2 = new Person("zhangsan",19);
//boolean flag = p.equals(p2);
所以结果会是false
如果想改变比较方法.要对equals进行重写
static 修饰的 叫做类字段
1000毫秒=1秒
1970-1-1 0:0:0 为开始时间
Date(long date)
Date d2=new Date(0);
System.out.println(d2.toLocaleString());
参数为毫秒 0时会输出 1970-1-1 8:00:00 即系统时区的开始时间
shift Ctrl +m 封装成方法
Date d.getTime 获得毫秒值
\ 斜杠为转义符,和其他字符组合表示特殊含义 使用时要加 \\
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
src:源数组
* srcPos:指定从哪个索引位置开始复制 1
* dest:目标数组
* destPos:指定目标数组接收元素的索引位置
* length:目标数组接收元素的个数
static long currentTimeMillis() :以毫秒值返回当前系统时间(1970-1-1 0:0:0至今过了多少毫秒)
static void exit(int status)
* 终止虚拟机的运行
System 类
1 static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
src:源数组
* srcPos:指定从哪个索引位置开始复制 1
* dest:目标数组
* destPos:指定目标数组接收元素的索引位置
* length:目标数组接收元素的个数
2 static long currentTimeMillis()
返回以毫秒为单位的当前时间 接收对象是 Long类型
3 static void exit(int status)
终止当前正在运行的 Java 虚拟机
1.1 包装类 包装类就是封装了基本数据类型的类
在实际程序使用中,程序界面上用户输入的数据都是以字符串类型进行存储的。而程序开发中,我们需要把字符串数据,根据需求转换成指定的基本数据类型,如年龄需要转换成int类型,考试成绩需要转换成double类型等。那么,想实现字符串与基本数据之间转换怎么办呢?
Java中提供了相应的对象来解决该问题,基本数据类型对象包装类:java将基本数据类型值封装成了对象。封装成对象有什么好处?可以提供更多的操作基本数值的功能。
8种基本类型对应的包装类如下:
其中需要注意int对应的是Integer,char对应的Character,其他6个都是基本类型首字母大写即可。
A:构造方法:
B:成员方法:
Integer:
* String --- int
* 方式1:int intValue()
* 方式2: static int parseInt(String s)
* int --- String
* 方式1: + ""
* 方式2:String toString() *
* 构造方法:
* Integer(int value)
* Integer(String s)
判断一个属是否符合int类型的范围
n>Math.pow(-2 , 31)&&n<Math. Pow (2 , 31)-1 即 -2的31次幂<int n<2的31次幂减1
//int字符串转integer
Integer i=new Integer("10");
System.out.println(i);
//包装类对象i调用.intValue() 方法来得到 其指向的int值
//String --int
int a=i.intValue();
System.out.println(a+12);
//String --int
int b=Integer.parseInt("40");
System.out.println(b);
//int---String
Integer i2=new Integer(50);
String s=i2.toString();
System.out.println(s);
//int---String
String s2=Integer.toString(60);
System.out.println(s2);
构造Date对象,获取某一时间
Date d=new Date(); 创建当前系统时间的Date对象 ,即获得当前时间
System.out.println(d.toLocaleString());-------2017-12-19 21:20:39
根据指定时间创建 ,即1970加括号以后的时间
( long date )
Date d2=new Date(1000*60*60*24L);
System.out.println(d2.toLocaleString());------ 1970-1-1 8:00:01
}
Date.setTime(1000*60*60*24L ) 根据指定时间创建 与上作用相同 ; get 即获取
//将日期对象转换成long类型 即获得毫秒值
long l = d1.getTime();
long l2 = d2.getTime();
1.2 DateFormat类 & SimpleDateFormat
DateFormat是抽象类,我们需要使用其子类SimpleDateFormat来创建对象
SimpleDateFormat() :使用默认的模式进行对象的构建
格式化:
* Date --- String
SimpleDateFormat(String pattern) :使用的指定的模式进行对象的构建
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
B:DateFormat类方法
用SimpleDateFormat 的对象调用从父类DateFormat继承的方法
sdf.format( Date s)
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd HH:mm:ss");
Date date=new Date(); //获取一个date对象,(此时是当前时间)
String d=sdf.format(date); //对对象date进行格式化
System.out.println(d);
//解析 .parse 将 String--------date
Date d = sdf.parse("2049年08月26日 13:39:12");
formart date-----String
注意要解析的字符串必须和格式化的格式相同
Calendar类概述
Calendar是日历类,在Date后出现该类将所有可能用到的时间信息封装为静态成员变量,方便获取
Calendar类静态方法
创建一个日历类对象
Calendar c = Calendar.getInstance(); //返回当前时间
Calendar c = Calendar.getInstance();
void set(int field, int value) :把指定的字段修改成指定的值
c.set(Calendar.DAY_OF_MONTH, 20);
void add(int field, int amount): 在指定的字段上加上指定的值
c.add(Calendar.DAY_OF_MONTH, -1);
int get(int field) // 返回给定日历字段的值
public static final int YEAR 1
System.out.println(Calendar.YEAR);
int year = c.get(1);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH) + 1;
int day = c.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "年" + month + "月" + day + "日");
注意 MONTH 月份要+1
int month=c.get(Calendar.MONTH)+1
c.get( ) 静态字段
Scanner
String------SDF------Date
ctrl +2 +l 生成返回值
\\转义 邮箱要匹配 点 . 前边需加\\ 否则代表任意符号
\\w 包含字母,数字,下划线
|
|