【Java SE】1.JAVA基础知识

2019-10-16  本文已影响0人  小王爱写BUG

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。注意目录不能有中文

4. 常用的DOS命令

win+r 输出cmd

5. Path 环境变量

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

6.数据类型

7.运算符号

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

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


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


9.方法重载overload|重写override

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

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

10.构造方法

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

继承中的构造是:

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 表示某个类的父类,只能用在非静态方法中。
功能:

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

构造方法

不能用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接口

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

接口的内容:

13内部类

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

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

static

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

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

上一篇下一篇

猜你喜欢

热点阅读