基础知识

基础知识

一、 数据类型

在这里插入图片描述

数据类型字节默认值
byte10
short20
char2‘\u0000’
int40
float40.0f
double80.0d
long80
boolean1位false

未带有字符后缀标识的整数默认为int类型;
未带有字符后缀标识的浮点数默认为double类型。

自动转换(低位向高位转换):byte–>short–>int–>long–>float–>double
强制转换(高位向低位转换):①会损失精度,产生误差,小数点以后的数字全部舍弃。②容易超过取值范围。

二 、权限修饰符

修饰词本类同一个包的类继承类其他类
private1000
无(default)1100
protected1110
public1111

1表示可见,0表示不可见
父类的protected成员是包内可见的,并且对子类可见;
若子类与父类不在同一包中,那么在子类中,子类实例可以访问其从父类继承而来的protected方法,而不能访问父类实例的protected方法。

三、关键字

1. abstract

abstract关键字可以修饰类或方法。
abstract类可以扩展(增加子类),但不能直接实例化。
abstract方法可以不在声明它的类中实现,但必须在某个子类中重写。
abstract关键字不能应用于static、private或final方法,因为这些方法不能被重写、不能在子类中实现。

2. break&Continue

break语句用于终止某个语句块的执行。用在循环语句体中,可以强行推出循环。

continue语句用在循环语句体中,用于终止某次循环过程,跳过循环体中continue语句下面未执行的循环,开始下一次循环。

3. extends&implements

类继承类或接口继承接口
通过继承,子类自动拥有了父类(基类superclass)的所有成员(成员变量和方法)。

java只支持单继承,不允许多继承(一个子类只能有一个基类,一个基类可以派生出多个子类)。
通过类来实现接口,并且需要在这个类中将所实现接口中所有的抽象方法实现出来。一个类可以实现个接口。

4. static

在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量。在第一次使用时候被初始化,对于该类的所有对象来说,static成员变量只有一份。

用static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员。

可以通过对象引用或类名(不需要实例化)访问静态成员。

5. this

在类的方法定义中使用this关键字代表使用该方法的对象的引用。

当必须指出当前使用方法的对象是谁时要用this。

有时使用this可以处理方法中成员变量和参数重名的情况。

this可以看作是一个变量,它的值是当前对象的引用。

6. super

super是指向父类的引用,可以用来调用父类中公有的方法和变量。如果父类和爷爷类中都有相同的变量,遵循就近原则调用父类中的变量。

如果构造方法没有显示地调用父类的构造方法,那么编译器会自动为它加上一个默认的super()方法调用。如果父类由没有默认的无参构造方法,编译器就会报错,super()语句必须是构造方法的第一个子句。

7.final

(1)修饰类:
当用final修饰一个类时,表明这个类不–能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。
(2)修饰方法:
如果只有在想明确禁止 该方法在子类中被覆盖的情况下才将方法设置为final的。即父类的final方法是不能被子类所覆盖的,也就是说子类是不能够存在和父类一模一样的方法的。即此方法不能被重写(可以重载多个final修饰的方法)。
注:类的private方法会隐式地被指定为final方法。
(3)修饰变量:
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。

三、线程

1.创建
可以通过继承Thread类或者实现Runnable接口来创建线程。

	MyRunnable mr =new MyRunnable();
	Thread th =new Thread(mr);
	th.start();
	
    new Runnable() {
        @Override
        public void run() {
            
        }
    };

2.线程的状态
线程的状态是线程控制的基础,主要有创建、可运行、运行、阻塞、死亡五个状态。

(1)创建状态:线程对象已经创建,还没有在其上调用start()方法。

(2)可运行状态:当线程有资格运行,但调度程序还没有把它选定为运行线程时线程所处的状态。当start()方法调用时,线程首先进入可运行状态。在线程运行之后或者从阻塞、等待或睡眠状态回来后,也返回到可运行状态。

(3)运行状态:线程调度程序从可运行池中选择一个线程作为当前线程时线程所处的状态。这也是线程进入运行状态的唯一一种方式。

(4)等待/阻塞/睡眠状态:这是线程有资格运行时它所处的状态。实际上这个三状态组合为一种,其共同点是:线程仍旧是活的,但是当前没有条件运行。换句话说,它是可运行的,但是如果某件事件出现,他可能返回到可运行状态。

(5)死亡态:当线程的run()方法完成时就认为它死去。这个线程对象也许是活的,但是,它已经不是一个单独执行的线程。线程一旦死亡,就不能复生。如果在一个死去的线程上调用start()方法,会抛出java.lang.IllegalThreadStateException异常。

3.控制线程的执行
(1)Thread.sleep(longmillis),线程休眠,单位毫秒。
线程睡眠是帮助所有线程获得运行机会的最好方法,不会释放锁标记。
线程睡眠到期自动苏醒,并返回到可运行状态,不是运行状态。sleep()中指定的时间是线程不会运行的最短时间。因此,sleep()方法不能保证该线程睡眠到期后就开始执行
sleep()是静态方法,只能控制当前正在运行的线程。

(2)Thread.yield(),线程让步,暂停当前正在执行的线程对象(不释放锁标记),(只能)允许具有相同优先级的其他线程获得运行机会。但是,实际中无法保证yield()达到让步目的,因为让步的线程还有可能被线程调度程序再次选中。
设置线程的优先级:线程默认的优先级是创建它的执行线程的优先级。可以通过setPriority(int newPriority)(1-10)更改线程的优先级。当设计多线程应用程序的时候,一定不要依赖于线程的优先级。因为线程调度优先级操作是没有保障的,只能把线程优先级作用作为一种提高程序效率的方法,但是要保证程序不依赖这种操作。

(3)join(),任何地方当调用了t.join(),就必须要等待线程t执行完毕后,才能继续执行其他线程。这里其实是运用了Java中最顶级对象Object提供的方法wait()。wait()方法用于线程间通信,它的含义是通知一个线程等待一下,让出CPU资源,注意这里是会放弃已经占有的资源的。直到t线程执行完毕,再调用notify()唤醒当前正在运行的线程。

4.线程的同步和锁
并发编程中存在线程安全问题,原因主要是:1.存在共享数据 2.多线程共同操作共享数据。

synchronized用于实现线程互斥的访问同步,synchronized只能标记非抽象的方法,不能标识成员变量。

Java中每一个对象都可以作为锁,这是synchronized实现同步的基础:
(1)普通同步方法(实例方法),锁是当前实例对象 ,进入同步代码前要获得当前实例的锁
(2)静态同步方法,锁是当前类的class对象 ,进入同步代码前要获得当前类对象的锁
(3)同步方法块,锁是括号里面的对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁。

5.线程的交互
void notify()——唤醒在此对象监视器上等待的单个线程。
void notifyAll()——唤醒在此对象监视器上等待的所有线程。
void wait()——导致当前的线程等待,直到其他线程调用此对象的 notify()方法或 notifyAll()方法,会释放锁标记。

wait()的两个重载方法:
void wait(longtimeout)——导致当前的线程等待,直到其他线程调用此对象的 notify()方法或 notifyAll()方法,或者超过指定的时间量。

void wait(longtimeout, int nanos)——导致当前的线程等待,直到其他线程调用此对象的 notify()方法或 notifyAll()方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量。

void join()——等待该线程终止。
void join(longmillis)——等待该线程终止的时间最长为 millis毫秒。
void join(longmillis,int nanos)——等待该线程终止的时间最长为 millis毫秒 + nanos 纳秒。

6.线程池
//创建一个可重用固定线程数的线程池
ExecutorService pool =Executors.newFixedThreadPool(2);
//将线程放入线程池中进行执行
pool.execute(t1);

四、异常

在这里插入图片描述

  1. 粉红色的是受检查的异常(checked exceptions),其必须被 try{}catch语句块所捕获,或者在方法签名里通过throws子句声明.受检查的异常必须在编译时被捕捉处理,命名为 Checked Exception 是因为Java编译器要进行检查,Java虚拟机也要进行检查,以确保这个规则得到遵守.

  2. 绿色的异常是运行时异常(runtime exceptions),需要程序员自己分析代码决定是否捕获和处理,比如 空指针,被0除…

  3. 而声明为Error的,则属于严重错误,如系统崩溃、虚拟机错误、动态链接失败等,这些错误无法恢复或者不可能捕捉,将导致应用程序中断,Error不需要捕捉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
电工基础知识 pdf 是一个电工行业常用的电子文档格式,用于传播和学习电工基础知识。它通常包含了电工工作所需的基本概念、电路原理、电气符号、安全规范、电工工具、设备维护等内容。 在电工基础知识 pdf 中,通常会介绍电路中的电压、电流和电阻的基本概念,以及它们之间的关系。还会介绍电路中的串联和并联电路的特点,以及电阻、电容、电感等电路元件的原理和作用。此外,还可能包含有关交流电和直流电的知识,例如交流电的频率和电压等概念。 电气符号是电工行业中非常重要的一部分,因此电工基础知识 pdf 中通常会包含各种常用电气符号的图示和对应的意义。学习和熟悉这些符号对于理解电工图纸和电路设计非常重要。 安全规范也是电工基础知识 pdf 中不可或缺的内容。这些规范包括了电工工作中常见的安全事项,例如电源的安全使用、电路绝缘、防止触电、防止火灾等。了解和遵守这些规范对于电工工作的安全至关重要。 此外,电工基础知识 pdf 可能还会介绍一些常用的电工工具,例如万用表、电动工具、绝缘手套、安全帽等,并说明它们的使用方法和注意事项。 最后,电工基础知识 pdf 可能还包含设备维护的相关知识。这些知识包括了对电路设备的检修、维修和保养,以及常见的故障排除方法等。 综上所述,电工基础知识 pdf 是一个非常实用的电子文档格式,它包含了电工行业所需的基本概念、电路原理、电气符号、安全规范、电工工具、设备维护等内容。它对于电工的学习和工作具有重要作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值