【Java SE】1.JAVA基础知识

1.Java语言发展史

Java语言是Sun公司在1995年推出的计算机语言。
Java之父:詹姆斯·高斯林(James Gosling)
1996年Java推出Java 1.0
1997 Java 1.1
1998 Java 1.2
2000 Java 1.3
2002 Java 1.4
2004 Java 5.0(更新力度大)
2006 Java 6.0
2009 Oracle甲骨文公司收购Sun
2011 Java 7.0
2014 Java 8.0(公司使用最多版本)
2017 9月 Java 9.0
2018 3月 Java 10.0
2018 9月 Java 11.0

2. Java 跨平台原理

中国人与日本人进行交流,需要找个翻译。
Java在Windows上运行,需要JVM。
在运行Java 应用程序的操作系统上,安装一个与操作系统对应的Java虚拟机(JVM)即可

JDK (Java Development Kit) ,Java程序开发包,包含JRE和开发使用的工具(编译工具javac.exe,运行工具java)想要开发Java程序必须安装JDK javac
JRE (Java Runtime Environment),Java运行时环境,包含JVM和运行需要的类库,需要运行一个java程序,只需要安装jre即可 java

java的跨平台主要是JVM跨平台,.class可以在虚拟机中运行

3.JDK下载和安装

下载安装JDK 1.8。注意目录不能有中文

  • 目录介绍:
    bin 存放JDK的各种工具命令,java javac
    conf JDK相关配置文件
    include 存放平台特定的头文件
    jmods 存放JDK的各种模块
    legal 存放JDK各模块的授权文档
    lib 存放JDK工具的补充jar包

4. 常用的DOS命令

win+r 输出cmd

5. Path 环境变量

配置JAVA_HOME=c:\xxx
%JAVA_HOME%\bin

6.数据类型

  • 八大基本数据类型以及对应的包装类
    • byte Byte
    • char Character
    • short Short
    • int Interger
    • long Long
    • float Float
    • double Double
    • boolean Boolean

7.运算符号

%取余数 /取整
|或 &和 逻辑与
&&短路与
equals 比较内容
== 比较内存 ?
正则表达式
Math.ceil();向上取整double
Math.floor();向下取整double
Math.round();四舍五入long不带小数点了

8.成员、局部变量和方法

  • 定义位置不一样
  • 作用范围:成员变量在当前类的所有方法中都可以访问(注意:static)
  • 默认值不一样:成员变量都有默认值,而局部变量必须赋值后才可以使用
  • 内存位置不一样:局部栈内存,成员堆内存
  • 生命周期不一样:局部方法进栈诞生,方法出栈消失,成员对象创建诞生,对象被垃圾回收消失。
  • static只能修饰成员方法和成员变量
  • 静态方法中可以直接调用另一个静态方法
  • 实例方法也可以直接调用静态方法
  • 静态方法调用非静态方法需要先实例化非静态方法所在的类
  • 实例方法可以直接调用另一个实例方法
  • 如何调用另一个类的静态成员变量和静态成员方法(局部的不能调用)-直接使用类名点的方式

Java命令
循环
形参实参(一个内存、两个变量)参数形参是局部变量,在调用方法时赋值,不能在括号内赋值,形参不赋值也能调用。
方法的返回值
方法的递归调用
包与权限


9.方法重载overload|重写override

方法名称相同,方法的参数个数、类型、顺序至少一个不相同。与修饰符号public无关,与返回类型无关。让方法的功能更多,更具兼容性。例如:println();

子类的成员方法与父类的成员方法名称相同,参数个数,类型、顺序完全一样,访问的修饰符号子类可以更大,声明的异常子类、返回值类型可以更小。

10.构造方法

构造方法是用来创建对象的,通过new 来创建对象时,其实就是在调用构造方法。类名相同,没有返回值,通过实例化这个类的时候调用。默认构造与类名相同、无参数、无代码、公开的。空类中有默认构造方法,只要定义了构造,默认构造就不默认提供。
私有化构造,只能自己实例化自己,单例需要提供静态的工厂方法instance()返回自己的实例。

继承中的构造是:

  • 先执行父类构造,再执行子类构造默认有super();
  • 可以用super(参数);调用父类重载构造
  • super();的父类调用只能是第一个语句

11.String

String的内部为char[]数组
字符串内容永不可变
String 字符串常量(线程安全)相加内存中会有多个字符串,效率低下。StringBuilder(str);
StringBuffer 字符串变量(线程安全)
StringBuilder 字符串变量(非线程安全)默认为“”,转成字符串:toString();
将String转化为StringBuffer,字符串缓冲区,默认长度为16的数组。
String str = "abc";
StringBuffer sb = SringBuffer(str);
sb.append("123");

String类的API
字符串常量池,直接双引号创建的字符串就这字符串常量池中。true
new的字符拼接的字符串不在池中。
对于引用类型来说,==比较地址值
str1.concat(str2);//1,2都不改变。产生新的字符串str3
str1.substring(int begin,end);//字符串的截取
str="hello";str="world";//str中存的是地址值,字符串还是没变
char[] chars= sttr.toCharArray();
split(正则表达式);分割注意"."分割不可以,要用"//."

包装类

将基本数据类型包装为类,提供需要的方法、
ArrayList无法存储基本类型但是可以存储包装类

# 装箱与拆箱
ArrayList<Integer> list = new ArrayList<>();
list.add(1);   //自动装箱
int a = list.get(0); //自动拆箱

12.继承

继承是指一个类是另一个类的子类,extends。在Java中是单一继承的。
从父类中继承的是被public\protected修饰的实例成员变量或成员方法
如果子类重写了父类的方法,则调用时就会调用子类的,否则调用父类的
instanceof有继承关系的两个类的判断 A 是不是继承B

13.多态(动态绑定)

父类的变量=子类的实例
成员变量与类型绑定
实例方法与对象绑定

14.super&& this

super 表示某个类的父类,只能用在非静态方法中。
功能:

  • 在子类中通过super(…)调用父类的构造方法,第一句
  • 在子类中访问被隐藏的父类的成员变量和方法

this 表示当前对象的引用,只能用在非静态的方法中
功能:

  • 在构造方法中的第一句,调用另一个构造方法。
  • 在非静态方法中调用被隐藏的成员变量和方法,非第一句。解决成员变量和局部重名问题
    super和this内存.jpg

构造方法

不能用static,构造方法不能被重写,final不能被重写。

final修饰 -
这个类不能有子类
成员变量 在声明时必须赋值,或在构造中赋值,不能修改值
成员方法 子类不能重写这个方法

finally finallize
finallize当垃圾回收器确定不存在该对象的更多引用时,由对象的垃圾回收器调用方法。
finally有程序代码块调用,一定执行。try catch finally

Scanner&Random

Scanner sc = new Scanner(System.in); //System.in从键盘输出
int num = sc.nextInt();
//String str = sc.next();
//使用匿名对象
method(new Scanner(System.in));

Random r = new Random(); 
r.next(3);//[0,3)
键盘输入三个值最大的jpg.jpg

11抽象类

abstract抽象
可以修饰类,表示这个类是抽象类,抽象类不能被new实例化,就是不能创建对象
抽象类的功能是让子类继承
抽象类可以包含抽象方法
抽象方法的特点
不能有方法体
必须在抽象类中
子类必须实现父类全部的抽象方法
abstract的限制
不能与static共用
不能与private共用
不能与final共用

12接口

适配器是对接口的方法做了默认实现

  • interface定义的类就是接口
  • 接口通过implements实现
  • 一个类只能继承一个其他类,但可以实现多个接口
  • 接口中所有的方法都是public abstract
  • 接口中所有成员变量都是public static final静态常量

接口的内容:

  • 1成员变量其实是常量:
    [public] [static] [final] 数据类型 常量名 = 数据值;
    常量必须赋值,赋值后不能改变,常量名称完全大写,用下划线分割。
  • 2接口中最重要的就是抽象方法:
    [public] [abstract] 返回值类型 方法名称(参数);
    注意:实现类必须覆盖接口的所有抽象方法,除非实现类为抽象类
  • 3从Java 8开始,开始接口中定义默认方法:
    [public] default 返回值类型 方法名称(参数){方法体}
    主义:默认方法也可以被覆盖重写
  • 4从Java 8开始,接口中定义静态方法:
    [public] static 返回值类型 方法名称(参数){方法体}
    注意:通过接口名调用,不能通过实现类对象调用
  • 从Java 9开始,接口中可以定义私有方法:
    private [static] 返回值类型 方法名称(参数){方法体}
    注意:只有自己能调用

13内部类

访问外部类的所有成员信息
实现数据封装
数据回调
静态内部类,不和外部类一起加载和初始化,他是单独的初始化。

匿名内部类,在【[创建对象]的时候,只能使用一次。省略了实现类/子类的名称
如果希望多次创建对象,而且类的内容一样,那么需要使用单独定义的实现类。
匿名对象,在【[调用方法]】的时候只能调用唯一的一次。省略了对象的名称
如果希望同一个对象,调用多次,那么必须给对象起个名字。

static

使用static的变量或方法,则该变量或方法不在属于对象,而是属于这个类。类名.方法名调用。静态不能访问非静态。静态方法中不能用this,this指代当前对象,static跟对象没关系。只和类有关系

修饰成员变量,成员方法,内部类,代码块。
不能修饰顶层类,构造方法,局部变量,不能与abstract共同使用
静态代码块在类的字节码被载入内存时执行,forName只加载字节码不实例化类,单例模式,懒汉、饿汉static

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

推荐阅读更多精彩内容