Java笔记01

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);//获取年份,其他类似

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,651评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,468评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,931评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,218评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,234评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,198评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,084评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,926评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,341评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,563评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,731评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,430评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,036评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,676评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,829评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,743评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,629评论 2 354

推荐阅读更多精彩内容

  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 2,378评论 0 4
  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 4,259评论 0 16
  • 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?答:可以有多个类,但只能有一个publ...
    岳小川阅读 927评论 0 2
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 1,054评论 0 4
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,097评论 1 32