A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 中国好邻居 中级黑马   /  2017-12-21 20:45  /  1019 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 小石姐姐 于 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 包含字母,数字,下划线


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马