![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
飞奔的加瓦
这个作者很懒,什么都没留下…
展开
-
35、线程的让步与阻塞
1、线程的让步 Thread.yield( ) 当满足某个条件,正在执行的线程把CPU释放出来,然后所有线程争抢cpu Thread.yield( )class Person implements Runnable{ public void run(){ for (int i=0;i<50;i++){ System.out.pri...原创 2018-09-13 17:18:17 · 171 阅读 · 0 评论 -
17、继承
1、父类、超类、基类 2、子类拥有父类的成员,子类不能拥有父类中被private修饰的成员 3、java不支持多继承,支持单继承,因为多继承存在安全隐患,当多个父类定义相同的成员,子类不确定运行哪一个 java保留了这种机制,并用另一种方法体现:多实现...原创 2018-09-11 09:04:19 · 83 阅读 · 0 评论 -
18、子父类中的成员变量
1、子父类中的成员变量 01、结果为:李四 this代表使用该方法的当前对象的引用,当前使用show()的是stu,他在Student类中的特有属性是李四 如果想要访问父类的name,代码为System.out.println(super.name); 结果就为张三import java.util.Scanner; class Person { Str...原创 2018-09-11 09:07:04 · 198 阅读 · 0 评论 -
19、子父类中的函数:重写(覆盖)
1、重写(覆盖) 当子类中出现了和父类中一样的函数,当子类对象调用该函数,运行子类中的函数,就如同父类中的函数被覆盖了一样。2、子类的对象在调用子类方法时间,先在子类中找,找到就运行子类方法, 找不到就去父类中找该方法3、子类覆盖父类时,必须保证子类权限大于父类 public >default>private4、重写、重载 重载:方法名相同,看参数进行区分 重写:...原创 2018-09-11 09:08:05 · 1089 阅读 · 0 评论 -
20、子父类中的构造函数
1、子父类中的构造方法是不能被重写的,因为重写要求方法名和方法类型相同2、子父类构造函数特点 01、在对子类对象进行初始化时,父类构造方法先执行,然后在执行子类构造方法,因为子类构造方法第一句默认为super() 如想调用父类有参构造方法,()内需有参数02、子类的每个构造方法第一行都有隐式的super()注意:如父类中没有有参构造方法,子类仍调用父类有参构造方法,将会报错...原创 2018-09-11 09:09:05 · 129 阅读 · 0 评论 -
21、对象的转型
1、对象向上转型:子类转换为父类 Animal a= new Cat() 父类引用指向子类对象 Animal a虽然指向子类对象new Cat(),但它只能访问子类中包含的父类的东西,不能访问子类特有的方法2、对象向下转型:父类转换为子类 Cat c=(Cat)a a已经是animal,需要强转为Cat类型 现在将a强转为子类,它既能访问父类,也能访问子类(cat是子类,...原创 2018-09-13 17:16:44 · 114 阅读 · 0 评论 -
22、多态
面向对象三大特性:封装、继承、多态1、多态:事物存在的多种形态 2、多态的体现 父类引用指向子类对象 Animal c=new Cat() 3、多态的前提 01.必须得类与类之间存在关系,可以是继承关系,也可以是实现关系 02.必须得有重写4、多态的好处:大大提高了程序的可拓展性5、多态的弊端:只能父类的引用访问到父类的成员6、多态成员变量的特点 01、编译期间:参...原创 2018-09-12 11:13:57 · 79 阅读 · 0 评论 -
23、final
1、final是一个修饰符 final修饰的类不可以被其他类继承 final修饰的函数不能被重写 final修饰的变量不允许被再次赋值2、被final修饰的变量称为常量 常量字母全部大写,多个单词中间_ final String NAME=”小明”; final String STUDENT_NAME=”胡歌”;3、局部变量被final修饰变为:局部常量 成员变量被f...原创 2018-09-12 11:14:46 · 103 阅读 · 0 评论 -
24、抽象类、抽象方法
1.abstract 抽象修饰符,可以修饰类、方法 2、当多个类存在相同的功能,但是功能的主体不同,这是我们进行向上抽取,只抽取功能的定义,不抽取功能的主体3、抽象类的特点 01、抽象方法一定要在抽象类中 02、抽象类和抽象方法必须要被abstract关键字修饰 03、抽象类是不能被创建对象,因为调用抽象的方法没意义 抽象类中的方法,没有方法主体 04、抽象类中的抽...原创 2018-09-12 11:14:55 · 121 阅读 · 0 评论 -
25、接口
接口 接口是一个特殊的抽象类,当抽象类中全部是抽象方法时,可以通过接口来实现1、class 用于定义类 interface 用于定义接口 2、接口中没有成员变量 3、接口中成员的格式 public static final String NAME=”二小” //全局常量 public static void show(); //抽象方法注意 01、接口中只能出现...原创 2018-09-12 11:15:04 · 129 阅读 · 0 评论 -
26、捕获异常
1、try{ }catch (Exception e){ } 2、throws Exception 抛异常 主函数不处理异常,继续上抛,抛到虚拟机,虚拟机处理不了就会异常,保证程序正常终止。 只有虚拟机才能调用主函数,程序员编写的不可能调用主函数...原创 2018-09-12 11:15:18 · 180 阅读 · 0 评论 -
27、finally
finally:最终,最后 finally语句起到异常处理出口的作用,用在try…catch 之后。无论是否出现异常,finally中的语句都会被执行。原创 2018-09-12 11:15:25 · 108 阅读 · 0 评论 -
28、集合类ArrayList
集合类是一些特殊的类,专门用来存放其他类对象的容器,主要是完成一些数据库和数据结构的功能集合类的分类 1、List结构的结合类(线性的) ArrayList 、 LinkedList 、 Vector(向量) 、 Stack(栈) 2、Map结构的集合类 HashMap、HashTable 3、set结构结合类 HashSet、TreeSet(树形结构) 4、Queue结构...原创 2018-09-12 11:15:37 · 133 阅读 · 0 评论 -
29、LinkedList集合类
LinkedList link=new LinkedList(); Food f1=new Food(“话梅”,1) Food f2=new Food(“薯片”,2)//addFirst原理:从最上面放,取得时候:后进的先出去 link.addFirst(f1); link.addFirst(f2); 普通取法:(Food)get(i).getName(); //薯片、话梅...原创 2018-09-12 11:15:44 · 194 阅读 · 0 评论 -
30、Vector和Stack
Vector和Stack两者用法差不多Vector vec=new Vector(); Student s1=new Student(1,"胡歌"); Student s2=new Student(2,"八戒"); Student s3=new Student(3,"猴哥"); vec.add(s1); vec原创 2018-09-12 11:15:54 · 93 阅读 · 0 评论 -
31、HashMap
1原创 2018-09-12 11:16:06 · 140 阅读 · 3 评论 -
32、集合类的比较
1、list集合类和Map集合类的区别 键值:能唯一标识某一事物的值成为键值 list没有键值,Map有键值2、ArrayList和Vector的区别与HashMap和HashTable的区别相同 01、ArrayList和HashMap都是线程异步的,特点是:效率高、安全性低 02、Vector和HashTable都是线程同步的,特点是:效率低、安全性高汇款、网络情形与线程同步,...原创 2018-09-13 17:17:35 · 92 阅读 · 0 评论 -
33、线程
线程 有序严谨的指令集成为程序 程序的同时多运行成为进程 进程中不同的执行路径成为线程线程同步 指在一段程序执行过程中,无论成功还是失败,其他线程都会等待这段程序执行完毕,才转入其他线程,这样可以保证程序的安全性和完整性线程的创建方法 1、将类声明为Thread的子类,该子类重写Thread中的run方法,接下来可以分配并启动该子类的实例class Person exte...原创 2018-09-13 17:17:44 · 104 阅读 · 0 评论 -
16、java单例设计模式
单利设计模式 即一个类在一个内存中只存在一个对象1、如何做到 01、私有化构造方法 02、在本类中创建本类对象 03、对外界提供访问的方法 class Person { String name; int age; private Person(){ } static Person p=new Person(); public static Per...原创 2018-09-11 09:03:37 · 90 阅读 · 0 评论 -
15、对象初始化过程
对象初始化过程 1、因为new Student()用到了student类,所以会把它从硬盘加载进入内存 2、如有ststic静态代码块,会随着类的加载而执行 还有静态成员和普通方法也会随着类的加载而被加载 3、在堆中开辟空间,分配内存地址 4、在堆中建立对象特有属性,并同时对特有属性进行默认初始化,如String类型的成员变量默认值为null 5、对属性进行显示初始化 例:priv...原创 2018-09-11 09:01:44 · 147 阅读 · 0 评论 -
36、线程同步与安全
同步线程用synchronized同步代码锁原创 2018-09-13 17:18:28 · 172 阅读 · 0 评论 -
37、IO流
1、流是用于连接程序和设备的管道,用于数据传输 2、流的分类 四大基本抽象流:输入流、输出流、字符流、字节流 其他:文件流、缓冲流3、字符流 read、input:输入流 write、output:输出流 read、write:字符流 input、output:字节流FileReader:字符流,用于复制文本 FileInputStresm:字节流,用于复制视频或者图片 ...原创 2018-09-13 17:18:37 · 95 阅读 · 0 评论 -
1、java基础、jdk安装
1.jdk的安装和环境变量的设置 控制面板-系统-高级系统设置-高级-环境变量-系统环境变量-path, 复制…./jdk/bin到path 最后记得加分号;2、 public公共的 class类 static 静态的 void无返回类型 main主要的 ...原创 2018-09-10 10:07:03 · 153 阅读 · 0 评论 -
2、变量、数据类型和运算符
1、变量:是存储数据的一个单元 char:字符型 用于存储单个字符,单引号 如‘男’ ‘女’ int:整型 用于存储整数 double:双精度 用于存储小数 String:字符串 用于存储一串字符串,双引号 如“我喜欢你”2、变量三要素 数据类型、变量名称、变量的值3、使用变量的步骤 01.声明一个变量 ...原创 2018-09-10 11:17:39 · 215 阅读 · 0 评论 -
3、循环结构
1、while循环, int i=1; while(1<300){ //()内只允许出现boolean类型 System.out.println(“我爱你”); i++; }2、循环三要素 01.循环变量的初始化 02.循环的判断条件 03.循环体重改变循环变量的值3、do-while循环:先执行,在判断 字符串之间比较用eq...原创 2018-09-10 12:02:05 · 150 阅读 · 0 评论 -
4、数组、算法
1、JVM:java虚拟机 栈区(stacksegment):存放函数的参数值、局部变量的值 堆区(heapsepment):存放由new创建的对象和数组,JVM不定式查看和这个对象,如没有引用指向这个对象就回收 静态区、代码区2、java的基础类型是存放在栈内存的,引用类型引用的变量时栈内存的 new创建的存于堆内存3、数组:是一个变量,存储相同数据类型的一组数据4、...原创 2018-09-10 13:41:38 · 173 阅读 · 0 评论 -
5、面向对象、认识java类和对象
1、内存分析 codesegment:存放load到内存区的代码 datasegment:存放静态变量、字符串常量 stack:栈内存,存放局部变量 heap:堆内存,存放那个new出来的东西方法内的变量为局部变量,只是作用域不同,看作用域大小看大括号{ }2、面向过程:自己做的每部操作自己都了如指掌 面向对象:只要能完成任务,你做的每项操作我们都不用管 类:...原创 2018-09-10 14:01:31 · 118 阅读 · 0 评论 -
6、return关键字
1、return返回方法指定类型的值,(这个值总是确定的) class Dog { String name; public String print(String n){ System.out.println(n); return n; }}public class Person{ public static void mai...原创 2018-09-10 14:15:46 · 232 阅读 · 0 评论 -
7、toString方法
1、在java中,每个对象都有toString方法,String是java提供的一个类,可以用String 来new一个对象。 2、创建类时,如果没有定义toString方法输出对象时,会输出对象 的哈希码值即内存地址 正常情况下自己定义一个toString方法 public String toString(){ 、、、、、 } 详细部分日后补充...原创 2018-09-10 14:20:52 · 1155 阅读 · 1 评论 -
8、this关键字
1、在类的方法定义中,使用this关键字代表使用该方法的对象的引用 哪个对象在调用这个方法,this就等于哪个对象 this.name=one.name 2、有时使用this可以处理方法中成员变量和参数重名的问题 this.name=name; 第一个name是成员变量,第二个为参数3、this可以看做一个变量,它的值是当前对象的引用...原创 2018-09-10 14:30:04 · 109 阅读 · 0 评论 -
9、封装
1、封装: 修改属性的访问权限来限制对属性的访问,并为每个属性创建一对取值方法和赋值方法,用于对这些属性的访问代码日后补上 private原创 2018-09-10 14:36:40 · 86 阅读 · 0 评论 -
10、方法的重载
1、方法的重载 是指一个类中可以定义有多个名字相同、但参数不同的方法,调用时根据不同的属性列表选取相应的方法2、sort也是重载的方法,参数不同 Arrsys.sort(数组名)...原创 2018-09-10 14:41:07 · 298 阅读 · 0 评论 -
11、构造方法(构造函数)
1、new+构造方法 创建一个新对象 2、构造函数是定义在类中的一个用来初始化对象的函数 3、构造函数与类同名,且没有返回值,不能被void修饰 4、构造方法也可以重载,根据参数调用 5、每个类中默认都会有一个无参的构造方法...原创 2018-09-11 08:54:56 · 175 阅读 · 0 评论 -
12、构造代码块
class Person { String name; public Person(){ System.out.println("我是无参构造方法"); } public Person(String name){ this.name=name; System.out.println("我是无参构造方法"); } ...原创 2018-09-11 08:56:13 · 172 阅读 · 0 评论 -
13、构造函数之间的调用
1、构造函数之间的调用只能通过this语句调用, 2、构造函数调用时,this语句只能出现在第一行,两个构造函数按顺序执行class Person { String name; int age; public Person(String name){ this.name=name; System.out.println("构造函数1"); ...原创 2018-09-11 08:56:51 · 566 阅读 · 0 评论 -
14、static关键字
一、static的特点 1、随着类的加载而被加载2、优先于对象 的存在 被static修饰的成员优先于对象的存在,对象是后来的,所以他可以调用先于对象存在的静态变量(被static修饰的成员变量为静态变量)3、可以直接被类名调用 static随着类的加载而加载,当类加载了,静态成员也被加载了4、存放位置 类变量(静态变量):随着类的加载存在于data内存中 实例变量”随着对象...原创 2018-09-13 17:16:29 · 89 阅读 · 0 评论 -
14、静态代码块
1、静态代码块 随着类的加载而执行,并且只会执行一次,并且还优先于主函数 作用:给类进行初始化 static{ //代码 }2、原创 2018-09-11 08:58:11 · 110 阅读 · 0 评论 -
34、线程的优先级
class Person implements Runnable{ public void run(){ for (int i=0;i<20;i++){ System.out.println("线程1"); } }} class Person2 implements Runnable{ publi...原创 2018-09-13 17:18:07 · 82 阅读 · 0 评论