java基础

1.jre是java的运行环境,如果只下载安装jre,那么你的系统只能运行java程序。
jdk是java开发工具包,它提供了java的开发环境。jdk是整个java核心,包括java运行环境jre,一堆java工具tools.jar和java标准类库(rt.jar)。
2.被static修饰的变量属于类变量,可以通过类名.变量名直接引用,而不需要new出一个类来。
被static修饰的方法属于类方法,可以通过类名.方法名直接引用,而不需要new出一个类来。
被static修饰的变量、被static修饰的方法统一属于类的静态资源,是类实例之间共享的,换言之,一处变、处处变
。静态资源是类初始化的时候加载的,而非静态资源是类new的时候加载的。
一、静态方法能不能引用非静态资源?不能,new的时候才会产生的东西,对于初始化后就存在的静态资源来说,根本不认识它。
二、静态方法里面能不能引用静态资源?可以,因为都是类初始化的时候加载的,大家相互都认识。
三、非静态方法里面能不能引用静态资源?可以,非静态方法就是实例方法,那是new之后才产生的,那么属于类的内容它都认识。
静态块里面的代码只执行一次,且只在初始化类的时候执行。静态代码块对于定义在它之后的静态变量,可以赋值,但是不能访问。
3.final关键字总结:用来修饰数据,包括成员变量和局部变量,该变量只能被赋值一次且它的值无法被改变。对于成员变量来讲,我们必须在声明时或者构造方法中对它赋值;
用来修饰方法参数,表示在变量的生存期中它的值不能被改变;
修饰方法,表示该方法无法被重写;
修饰类,表示该类无法被继承。
4.访问权限:同一类:private 同一包:default 子类:protected 全局范围:public
5.java三大特性:多态、继承、封装(多态是同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口,使用不同的实例而执行不同操作。)
6.“”比较的是值【变量(栈)内存中存放的对象的(堆)内存地址】 (基本类型的数值,包装类型的内存地址)
equal用于比较两个对象的值是否相同【不是比地址】(包装类型内容重写了equals)
【特别注意】Object类中的equals方法和“
”是一样的,没有区别,而String类,Integer类等等一些类,是重写了equals方法,才使得equals和“==不同”,所以,当自己创建类时,自动继承了Object的equals方法,要想实现不同的等于比较,必须重写equals方法。
7.在访问volatile变量时不会执行加锁操作,因此也就不会使执行线程阻塞,因此volatile变量是一种比sychronized关键字更轻量级的同步机制。而声明变量是 volatile 的,JVM 保证了每次读变量都从内存中读,跳过 CPU cache 这一步。-----volatile关键字。
8.在并发编程中存在线程安全问题,主要原因有:1.存在共享数据 2.多线程共同操作共享数据。关键字synchronized可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块,同时synchronized可以保证一个线程的变化可见(可见性),即可以代替volatile。
Java中每一个对象都可以作为锁,这是synchronized实现同步的基础:
1.普通同步方法(实例方法),锁是当前实例对象 ,进入同步代码前要获得当前实例的锁
2.静态同步方法,锁是当前类的class对象 ,进入同步代码前要获得当前类对象的锁
3.同步方法块,锁是括号里面的对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值