手记

Java学习笔记——基础概念总结

一、跨平台原理
编辑源代码——编译成字节码文件——交给JVM解释运行——操作系统——操作系统与硬件交互——完成程序的运行

二、静态常量与实例常量的区别
1、静态常量用static修饰
2、静态常量不依赖对象,可以用类名.常量名访问调用,也可以用对象名.常量名访问调用;
实例常量依赖对象,只能用对象名.常量名访问调用
3、静态常量属于类,在类加载时就分配了空间,所以不用创建实例也可以访问;
实例常量属于对象,只有创建对象后才分配空间,所以必须创建对象后才能访问

三、新建数组
1、int[] array=new int[32];
array[0]=1;
array[1]=2;
2、int[] array=new int[]{1,2,3};
3、int[] array={1,2,3};
二位数组外层数组存的是内层数组的地址
参数传递的两种方式:1.值传递:当参数是基本数据类型时,本质是将数据本身复制一份交给方法; 2.引用类型传递:当参数是对象时,本质是将对象的地址复制一个交给方法,所以在方法里对对象的数据进行操作就会改变原对象的数据值。
Array.sort(数组名);Array.toString(数组名);
foreach:for(元素类型 元素变量:遍历数组){执行代码}
二维数组:

例:1.数组的冒泡排序法 2.数组使用包库排序 3.数组的克隆

四、方法与构造方法
方法:
方法: 访问修饰符 返回值 类名(参数列表) 代码块
构造方法: 访问修饰符 类名(方法名) 代码块
构造方法的规则:
1.方法名必须跟类名一致
2.构造方法没有返回值,不能用void定义
3.构造方法不能用static和final修饰
4.构造方法不能被继承,子类调用父类的构造方法需要用super关键字
例:1.递归法求和求阶乘

五、Overloading与Override的区别
1、定义:重载只要方法名相同,参数列表不同也可以;覆写必须方法名、参数列表、返回值必须一致
2、作用域:同一个类 继承关系上
3、权限: 无要求 子类不能拥有比父类更严格的访问权限

六、面对对象的三大特点:封装(private)、继承(excends)、多态
多态表现在:1.方法多态:方法重载、方法覆写
2.对象多态:子类对象通过向下转型、向上转型实现实例化
多态的实现机制:父类或接口的变量可以指向子类或实现类的实例对象,程序在调用方法的时候才动态绑定到引用变量所指的具体实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是父类或接口中定义的方法。

七、抽象类规则
1、抽象类和抽象方法必须用abstract修饰
2、抽象方法只需声明,不必实现
3、抽象类不能直接创建对象,也就是说不能用new关键字创建对象
4、含有抽象方法的类必须声明为抽象类,子类必须覆写所有父类的抽象方法才能被实例化,否则就还是个抽象类

八、接口
对象默认 public static final
方法默认 public abstract

九、抽象类与接口的区别
抽象类 接口
1、关键字 abstract interface
2、组成 常量、变量、全局常量 全局常量、抽象方法
方法、构造方法、抽象方法 不能有构造方法
3、权限 无要求 public
4、使用 extends implements
5、关系 抽象类可以实现接口 接口不能继承抽象类,但一个接口可以实现多个接口
6、局限 单继承局限 无局限
7、模式 模板模式 工厂模式、代理模式

十、String类
1、Srting创建对象的三种方式:
String str1="hello!"; 直接赋值创建对象
String str2=new String("有志者事竟成"); 构造方法创建并初始化
String str3="new"+"string"; 采用串联方式生成新的字符串

2、Srting类的转化成字符数组、字节数组
char data[]=str.toCharArray()将字符串转换成为字符数组
new String(date)将字符数组全部转化成字符串
new String(date,5,4)将字符数组部分转化成字符串
byte data[]=str.getByte()将字符串转化成字节数组

3、String类的常用方法
1.比较
equals比较
compareTo按字典顺序比较
compareToIgnoreCase按字典顺序比较两个字符串,不考虑大小写
2.查找
str.charAt(0)获取下角标的字符
str.contains(CharSequence s)判断是否包含指定的字符串
str.indexOf(String str)返回字符串第一次出现的位置,没找到返回-1
str.indexOf(String str,int fromIndex)从指定下角标开始寻找,返回字符串第一次出现的位置,没找到返回-1
str.lastIndexOf(String str)反向寻找
str.startWith()判断是否是这个前缀
str.endWith()判断是否是这个后缀
3.替换
str.replace(old,new)
str.replaceAll("o","***");所有替换
str.replaceFirst("1","_");替换第一次出现的
4.截取
str.substring(5) 取[5,)
str.substring(0,5) 取[0,5)
5.拆分
str.split(" ")按给定字符拆分
str.split("",n)按给定字符拆分成n个字符串
6.其他方法
str.length()字符串长度
str.trim()去空格
str.isEmpty()判断字符串是否为空
str.toUpperCase()转成大写
str.toLowerCase()转成小写
str.concat("java")连接字符串,相当于+,不改变str的值

十一、多线程
1、进程与线程的区别
进程:进行的程序,操作系统资源分配单位
线程:是进程中的执行路径,进程中的功能,是靠进程中的多个线程执行的
2、多线程的实现的两种方法:
继承Thread类,再覆写run方法或调用start方法
实现Runnable接口,再实现run方法或调用start方法()(构造方法public Thread(Runnable target))
sun方法有序;start方法无序
3、多线程的一些操作
getName() setName() currentThread()(返回的是一个对象) sleep(try{}catch{})
setPriority() getPriority
MIN_PRIORITY NORM_PRIORITY MAX_PRIORITY

4、线程同步
两种方法:
同步代码块,就是用synchronized修饰代码块,指明同步对象
同步方法,就是用synchronized修饰方法
同步的缺陷:虽然同步可以提高数据安全性,但是程序的性能降低,因为要排队;
当多个线程同时访问同一个资源的时候,会出现死锁现象。
同步的本质是下一线程要等待上一个线程执行完毕之后才执行

十二、反射
反射:通过对象找到类的信息(所有类都是Object的子类)
实例化Class类的对象有三种方法:
1、Object类的getClass() public final Class<?> getClass() Class<?>表示Class中的任意一个对象
2、类名.class
3、Class类的forName() public static Class<?> forName(String className) String的实现基础 throws ClassNotFoundException
instanceof(实例)
newInstance()新建实例对象
实例化Date对象、第3种方法工厂模式举例

附1: for嵌套的使用
例:输出空心菱形
附2:日历
例:1.for循环的日历 2.调用包库的日历
附3:模拟数据库
例:1.求最值 2.求平均成绩 3.按成绩排序 4.模拟数据库(账号密码)
附4:设计模式
例:1.模板模式 2.工厂模式 3.代理模式 4.单例模式

附5:关键字
new 创建对象
private 私有化修饰符 可以访问同一个类
default(friendly)不写 可以访问同包不同类
protected 保护修饰符 可以访问不同包的子类
public 公共修饰符 可以访问不同包的非子类
static 静态修饰符
main方法被static修饰,static修饰的方法只能调用static修饰的方法和属性
import 导包

5人推荐
随时随地看视频
慕课网APP