美文网首页
Java笔记01

Java笔记01

作者: Java_NET | 来源:发表于2019-08-13 23:01 被阅读0次

    1、主要学习主流javaee(包含javase)

    2、优势:跨平台/可移植性、安全性、面向对象、简单性、高性能、分布式、多线程、健壮性

    3、运行机制:编译型与解释性

            helloworld.java源程序---->javac---->字节码文件.class---->虚拟机JVM(java)---->解释执行

    4、jar包:字节码文件打包,src:jdk源代码,bin存放二进制文件的目录,lib存放类库

    5、(系统)环境变量的配置:Path: %JAVA_HOME%\bin; JAVA_HOME:jdk安装目录

    6、开发工具:Eclipse \ IntelliJ IDE \ NetBeans

    7、进行不产生舍入误差的数字(精确的运算)计算使用 BigDecimal/BigInteger

    8、封装:高内聚(封装细节)、低耦合(简化外部调用)

    9、JAVABean规则:提供了属性和相应的Get/Set方法,没有其他一些复杂的方法的简单的类

    10、多态:继承、重写、父类引用指向子类对象,多种实现

    11、抽象方法和抽象类 abstract告诉子类必须要给抽象方法提供具体的实现,通过抽象类,我们可以严格限定子类的设计,使子类之间更加通用

            抽象方法无具体实现

            抽象方法必须被子类实现

            抽象类不能实例化,不能使用new

            抽象类可以包含属性、方法、构造方法,但是构造方法不能用new来实例,只能用来被子类调用

            抽象类只能用来被继承

            抽象类可以包含普通方法,有具体实现

    12、接口/实现类

            只能定义不变的

            不提供任何具体方法interface

            全是抽象方法,不需要abstract修饰

            规范和具体实现的分离

            契约/规范

            接口可以多继承 extends

            访问修饰符只能是public或者默认

            接口中的属性只能是常量,修饰符可以不用写

            子类通过implements来实现接口中的规范

            不能创建实例,但是可以用于声明引用变量类型 IPerson person=new Student();

            实现类可以实现多个接口

    13、面相接口编程

            降低了模块间的耦合性,提高整个系统的可扩展性和可维护性

            在没有写实现是要设计好接口,所以设计比较难

    14、内部类

            成员内部类

            静态内部类 static

            任意修饰符

            静态成员

            非静态内部类

    特点

            可以直接访问外部类的成员

            必须寄存在一个外部类的对象里 Outer.Inner inner=new Outer().new Inner();

            生成类文件:Outer$Inner.class

            Outer.this.age

            this.age

            不能有静态方法 静态属性 静态初始化块

            外部类的静态方法 静态代码块不能访问非静态内部类

    匿名内部类

            适用于只是用一次的类

            new class(){}

            无构造方法

    15、字符串String和常量池

            字符串常量池

            先去常量池查找

            new 创建新的对象

            通常比较字符串使用 equals

            Class文件常量池

            运行时常量池

    16、阅读API文档

            String 类:

            数组的拷贝arraycopy(object src,int srcpos,object dest,int destpos,int length)

            数组的插入和删除都是拷贝

    17、Arrays工具类

            ToString

            Sort排序

            binarySearch二分查找

    18、二分法检索

            有序数组

            折半查找 low mid high

    19、包装类 :位于java.lang包

            使用包装类会在堆内存生成 对象

            基本数据类型和包装类对象互相转换

            var a=new Integer(30);

            var b=Integer.valueOf(30);

            int c=b.intValue();

            double d=b.doubleValue();

            int x=new Integer("888");字符串包装成Integer对象

            var z=x.toString();

            Integer.MAX_VALUE

            针对8种基本数据类型

            byte Byte

            boolean Boolean

            short Short

            char Character

            int Integer

            long Long

            float Float

            double Double

    20、包装类 自动装箱和拆箱(编译器帮我们处理)

            装箱:基本数据类型--自动转为--》对象 XXX.valueOf(值);

            拆箱:对象--自动转为--》基本数据类型 XXX.intValue();等

            包装类缓存的问题:-128~127直接从范围内取值,是同一个对象,不在范围内的==为false,equals为true

    21、String 源码分析:

            不可变对象(不可变字符序列)

            进行String类型的比较时一定要使用 equals方法比较(比较值)

    22、可变字符序列

            链式调用

            StringBuilder(一般使用StringBuilder)

            线程不安全,效率高

            StringBuffer

            线程安全,效率低

            Runtime.getRuntime().freeMemory();//获取系统剩余内存空间

    23、时间处理相关类

            位于java.util包

            时间:Date

            long now=System.currentTimeMillis();获取系统当前时刻毫秒数 long类型

            Date d=new Date();//默认当前系统时刻

            new Date(2000);//2000时刻

            d.getTime()获取毫秒数

            格式转换:DateFormat

            一般使用实现类SimpleDateFormat

    1、时间对象和字符串之间的转换

            把时间对象 --》 按照“格式字符串指定的格式”转为相应的 --》字符串

            DateFormat f=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//定义格式

            string str=f.format(new Date(毫秒数));//按照上述定义的格式返回字符串

    2、把字符串 --》 按照“格式字符串指定的格式”转为相应的 --》 时间对象

            DateFormat f2=new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒");

            Date date=df.parse(“2019年10月12日 12时12分12秒”);//throw ParseException

            日期类:Calendar

            一般使用实现类GergorianCalendar

            提供日期计算相关功能:年月日时分秒的展示和计算

            注意:月份从0开始到11代表1月到12月、星期用1-7表示,1表示星期日,2表示星期一

            Calendar c=new GergorianCalendar(年,月,日,时,分,秒);

            //Calendar c=new GergorianCalendar(2019,07,03,22,33,55);

            如果不传参数,默认是今天的日期时间new GergorianCalendar();

            int year=c.get(Calendar.YEAR);//获取年份,其他类似

            获取日期:分别获取年月日时分秒

    相关文章

      网友评论

          本文标题:Java笔记01

          本文链接:https://www.haomeiwen.com/subject/tuwijctx.html