- 博客(9)
- 收藏
- 关注
原创 Java 静态变量(类变量)和实例变量以及局部变量三者之间的区别区别?
1.写法不同静态变量用static修饰实例变量和局部变量则不用static修饰2.定义位置静态变量和实例变量均在类中但不在方法或局部块中3.存储地方不同静态变量存储在方法区,所有对象共享静态变量实例变量存储在堆内存局部变量存放在栈中4.生命周期实例变量与对象共存亡静态变量与方法共存亡静态变量与进程共存局部变量与创建区域共存亡5.初始值不同静态变量没有初始值实例变量有默认初始值局部变量有默认初始值表格 实例变量(成员变量)
2021-08-07 21:15:48
179
原创 java堆内存,栈内存和方法区
Java程序运行在JVM(Java虚拟机)上,这是Java能跨平台的主要原因JVM主要三种存储区堆内存1.JVM只有一个堆区,被所有线程共享,在虚拟机启动时创建,是虚拟机所管理的内存中最大的一块。此内存区域的唯一目的就是存放对象实例和数组2.在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理3.创建一个对象时,引用变量存放在栈内存中,对象存放在堆内存中引用变量的值是对象在堆中的首地址,这样建立起了联系(引用变量实质其实是个指针)引用变量在程序运行到其作用域之外后被...
2021-08-07 21:15:30
232
原创 JMM(java内存模型)
1.JMM是什么JMM :java内存模型线程 ----》 Java工作内存 ---》JMM控制 ----》主内存2.JMM作用现在不同品牌的电脑会存在各种硬件差异以及不同系统的电脑会导致对内存访问的不同,JMM存在就是保证Java程序能够对不同硬件和不同系统的电脑进行内存访问。3.JMM三大特征(1)原子性原子性指的是一个操作是不可分割,不可中断的,一个线程在执行时不会被其他线程干扰。int i = 2;int j = i;i++;i = i + 1;第一句..
2021-08-07 21:15:08
115
原创 抽象类和接口区别?
共同点:都不能实例化,都必须依赖子类完成实例化。 都是为了抽象,都是为了加强动态绑定(就是一个父类可以指向多个子类的现象)。不同点:抽象类可以有构造函数,是提供给子类依赖初始化的,接口中不可以有构造函数。 抽象类中可以没有抽象方法,但是有抽象方法的类一定是抽象类,接口中所有的方法都是抽象方法。 抽象类使用是is-a原则 接口使用是has-a原则(is-a是一种继承关系,指的是类的父子继承关系。表达的是一种方式:这个东西是那个东西的一种。例如:长方体与正方体之间--正方体是长方体的一种...
2021-08-07 21:14:49
201
原创 我所用过的设计模式
1.单例模式保证只产生一个对象分为懒汉式和恶汉式主要运用场景:XMl文件的解析public class Danli { //恶汉式单例 会造成内存消耗 //private static Danli danli=new Danli(); //懒汉式单例 private static Danli danli=null; private static Lock lock=new ReentrantLock(); private Danli() { } // public
2021-08-07 21:14:31
73
原创 Java异常处理
检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。运行时异常:运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。运行时异常:空指针异常 类型转换异常 算术异常 序列化异常 端口异常 数字格式转换异常 检查性异常:ClassNotFoundExceptionSQLExceptionIOExceptionFileN...
2021-08-07 21:14:06
110
原创 String,StringBuffer类和StringBuilder类
一、可变与不可变String类是一个不可变类,即创建String对象后,该对象中的字符串是不可改变的,直到这个对象被销毁。StringBuffer与StringBuilder都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存字符串,是可变类。由于String是可变类,适合在需要被共享的场合中使用,当一个字符串经常被修改时,最好使用StringBuffer实现。如果用String保存一个经常被修改的字符串,该字符串每次修改时都会创建
2021-08-07 21:12:55
172
原创 Java面向对象
Java创建对象的方式有五种1.New关键字创建对象 People peo1 = new People ();2.克隆创建对象 People peo2= (People ) peo1 .clone();3.反序列化创建对象 ObjectInputStream in = new ObjectInputStream(new FileInputStream("Employee .obj")); People peo1 = (People ) in.re...
2021-08-07 21:11:41
77
原创 多线程自用
1.创建多线程的方式继承Thread重写run()方法//方式1public class Demo1 extends Thread{ //重写的是父类Thread的run() public void run() { System.out.println(getName()+"is running..."); } public static void main(String[] args) { Demo1...
2021-08-07 21:11:17
127
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人