![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java基础学习笔记
java基础
地脉一腰
这个作者很懒,什么都没留下…
展开
-
java基础学习笔记汇总
标题链接常量https://blog.csdn.net/weixin_44871934/article/details/95802030?spm=1001.2014.3001.5502数据类型https://blog.csdn.net/weixin_44871934/article/details/95804743?spm=1001.2014.3001.5502数据转换https://blog.csdn.net/weixin_44871934/article/detai...原创 2021-11-18 11:18:45 · 276 阅读 · 0 评论 -
多态
多态:一个对象具备多种形态。父类的引用类型变量指向了子类对象或者是接口的引用类型变量指向了接口实现类的对象。多态的前提:必须存在继承或者实现的关系abstract class Animals{ String name; String color; public Animals(String name,String color){ this.name=name; this.c...原创 2019-08-16 08:50:51 · 85 阅读 · 0 评论 -
强制类型转换
基本数据类型转换:小数据类型--------->大数据类型 自动类型转换大数据类型--------->小数据类型 强制类型转化格式:小数据类型 变量名=(小数据类型)大数据类型引用类型转换:小数据类型--------->大数据类型 自动类型转换大数据类型--------->小数据类型 强制类型转化Animal ...原创 2019-08-16 09:02:41 · 94 阅读 · 0 评论 -
内部类
一个类定义在另一个类的内部,那么该类就称作为内部类class outer{ class inner{ }}内部类的class文件名:外部类$内部类(这样命名可以区分该class文件是属于哪个内部类的)内部类的应用场景:我们再描述A事物时,如果发现描述A事物内部还存在另一个比较复杂的事物B,而且这个比较复杂的事物B还需要访问A事物的属性等数据,这时就可以使用内部类。内部类的...原创 2019-08-16 09:24:13 · 78 阅读 · 0 评论 -
异常
异常的体系:------|Throwable:所有异常或者错误的超类-----------|Error:错误,一般由jvm引起的-----------|Exception:异常,需要通过代码处理如何区分异常与错误:如果程序出现不正常的信息的类名是以Error结尾的,那么肯定是错误,如果是以Exception结尾,肯定是异常Throwable常用的方法:1.toString():返回...原创 2019-08-16 10:04:14 · 78 阅读 · 0 评论 -
处理异常——捕获处理
捕获处理的格式:try{可能发生异常的代码;}catch(捕获的异常类型 变量名){处理异常的代码;}public class Demo6 { public static void main(String[] args) { // TODO Auto-generated method stub div(4, 0); } public static void div(in...原创 2019-08-16 10:16:50 · 118 阅读 · 0 评论 -
处理异常——抛出处理
抛出处理(throw,throws)public class Demo6 { public static void main(String[] args) { // TODO Auto-generated method stub try { div(4, 0); } catch (Exception e) { // TODO Auto-generated catch b...原创 2019-08-16 10:32:06 · 310 阅读 · 0 评论 -
自定义异常类
自定义异常类步骤:自定义一个类继承Exception即可需求:模拟吃饭,如果钱少于10块,那么抛出没有带够钱的异常class NoMoneyException extends Exception{ public NoMoneyException(String message){ super (message); }}public class Test16 { public st...原创 2019-08-16 11:00:51 · 203 阅读 · 0 评论 -
权限修饰符
权限修饰符是控制修饰的成员的范围可见性注意:在不同包下,只有public与protected访问,而且protected必须是在继承关系下才能访问原创 2019-08-16 11:12:21 · 84 阅读 · 0 评论 -
泛型
ArrayList<String> list=new ArrayList<String>();表示该容器只能存储字符串类型的数据泛型的好处:1.将运行时的异常提前至编译时2.避免了无谓的强制类型转换泛型在集合中的常见应用:ArrayList list=new ArrayList();ArrayList list=new ArrayList();ArrayL...原创 2019-08-21 09:49:30 · 125 阅读 · 0 评论 -
接口
接口的定义格式:interface 接口名{}接口要注意的事项:1.接口是一个特殊的类2.接口的成员变量默认修饰符为public static final,接口中的成员变量都是常量3.接口中的方法都是抽象方法,默认的修饰符为public abstract4.接口是没有构造方法的5.接口是给类去实现使用,非抽象类实现一个接口时,必须要把接口中的所有方法都实现实现接口的格式:cla...原创 2019-08-15 20:24:53 · 114 阅读 · 0 评论 -
值交换
调用一个方法的时候,传递给方法的变量实参,实际上传递的只是变量所存储的值public class Demo4 { public static void main(String[] args) { int a=3; int b=4; changeVable(a, b); System.out.println("结果是:a="+a+",b="+b);...原创 2019-08-15 20:11:55 · 125 阅读 · 0 评论 -
集合6——set及set接口下实现类
-------| set 无序,不可重复-----------| HashSet 底层使用Hash表支持,具备的特点是:存取速度快-----------| TreeSet 底层使用红黑树数据结构实现,如果元素具备自然顺序的特性,会按元素自然顺序进行排序HashSet:HashSet实现原理:往HashSet添加元素时,HashSet会先调用元素的hashcode方法得到元素...原创 2019-08-20 11:00:21 · 116 阅读 · 0 评论 -
Collections工具类与Arrays工具类
一、Collections:Collections与Collection的区别:Collection是一个集合的根接口,Collections是操作集合对象的一个工具类Collections常见方法:1.对list进行二分查找int binarySearch(list,key)int binarySearch(list,key,comparator)2.对list集合进行排序sor...原创 2019-08-24 10:26:46 · 235 阅读 · 0 评论 -
静态导入
静态导入可以作用于一个类的所有静态成员静态导入的作用:简化书写格式:import Static 包名.类名.静态的成员静态导入要注意的事项:如果静态导入的成员与本类的成员存在同名的情况下,那么默认使用本类的静态成员,如果需要指定使用静态导入的成员,那么需要在静态成员前面加上类名...原创 2019-08-24 10:31:22 · 155 阅读 · 0 评论 -
增强for循环
增强for循环的作用:简化迭代器的书写格式(底层还是使用迭代器遍历)增强for循环的使用范围:如果是实现了Iterable接口的对象或者是数组对象都可以使用增强for循环增强for循环格式:for(变量类型 变量名 :遍历的目标){} HashSet<String> set=new HashSet<String>(); set.add("狗娃");...原创 2019-08-24 10:45:35 · 134 阅读 · 0 评论 -
可变参数
可变参数的格式:数据类型…变量名定义一个函数做加法功能public class Test7 { public static void main(String[] args) { // TODO Auto-generated method stub int[]arr={1,2,3,4,5,6}; add(arr); } public static void add(in...原创 2019-08-24 10:54:42 · 91 阅读 · 0 评论 -
instanceof关键字
instanceof关键字的作用:判断一个对象是否属于指定的类别一般我们做强制类型转换之前都会使用该关键字先判断一下,再进行转换instanceof使用的前提:判断的对象与指定的类别必须要存在继承关系或者实现的关系使用格式:对象 instanceof 类别在这里插入代码片...原创 2019-08-15 19:03:47 · 85 阅读 · 0 评论 -
final 关键字
final关键字的用法:1.final修饰一个基本类型的变量时,该变量不能重新赋值,第一次的值为最终的public static final double PI=3.14;2.final修饰一个引用类型变量时,该变量不能重新指向新的对象final Circle c=new Circle(4.0);//c不能再重新指向新的对象3.final修饰一个函数时,该函数不能被重写public...原创 2019-08-15 19:10:26 · 75 阅读 · 0 评论 -
抽象类
我们在描述一类事物时,发现该事物确实存在着某种行为,但是这种行为目前是不具体的,那么我们可以抽取这种行为声明,但是不去实现该种行为,这种时候这种行为我们称作为抽象的行为,我们就需要使用抽象类。abstract class Animal{ String name; String color; public Animal(String name,String color){ this.na...原创 2019-08-15 19:54:43 · 99 阅读 · 0 评论 -
使用LinkedList存储一副扑克牌,实现洗牌功能
public class Poker{ String color;//花色 String num;//点数 public Poker(String color,String num){ this.color=color; this.num=num; } @Override public String toString() { return "{"+color+num+"}"...原创 2019-08-19 23:35:34 · 283 阅读 · 0 评论 -
模板模式
解决某类事物的步骤有些是固定,有的是发生变化的,那么这时候我们可以为这类事情提供一个模板代码,从而提高效率模板模式步骤:1.先写出解决该类事情其中的一件的解决方案2.分析代码,把会发生变化的代码抽取出来独立成一个方法,把该方法描述成一个抽象方法。3.使用final修饰方法,防止别人重写模板的方法练习:编写一个计算程序运行时间的模板abstract class MyRunTime{ p...原创 2019-08-16 11:22:51 · 65 阅读 · 0 评论 -
object类
object类是所有类的终极父类,任何类都继承object类object类常用的方法:1.toString();返回该对象字符串表示Object object = new Object(); System.out.println(object.toString()); System.out.println(object);输出一个对象和调用toString方法结果一样:完整类名...原创 2019-08-16 14:07:47 · 89 阅读 · 0 评论 -
线程的常用方法的简单介绍
1.Thread(String name):初始化线程名字2.getName():返回线程的名字3.setName(String name):设置线程对象名4.sleep():线程睡眠指定的毫秒数(静态的方法)5.getPriority():返回当前线程对象的优先级,默认线程的优先级是56.setPriority(int newPriority):设置线程的优先级,虽然设置了线程的优先级...原创 2019-08-17 14:51:50 · 103 阅读 · 0 评论 -
使用线程模拟3个窗口同时售50张票
方式一:class SaleTicket extends Thread{ static int num=50; static Object o=new Object(); public SaleTicket(String name){ super(name); } @Override public void run() { while(true){ synchroniz...原创 2019-08-17 15:16:18 · 890 阅读 · 0 评论 -
线程安全问题的解决方案
在什么情况下回出现线程安全问题:1.存在两个或者两个以上的线程对象,而且线程之间共享一个资源2.有多个语句操作共享资源线程安全问题解决方案:方式一:同步代码块格式:synchronized(锁对象){需要被同步的代码;}同步代码块需要注意的事项:1.所对象可以为任意一个对象2.在同步代码块中,调用sleep方法并不会释放锁对象3.同步代码块只有真正存在线程安全问题才使用同步...原创 2019-08-17 15:46:54 · 555 阅读 · 0 评论 -
集合9——TreeMap
TreeMap<Character,Integer> tree=new TreeMap(); tree.put('a', 97); tree.put('b', 98); tree.put('c', 99); System.out.println(tree);TreeMap要注意的事项:1.往TreeMap添加元素时,如果元素的键具备自然顺序的特点,那么就会按顺序...原创 2019-08-22 17:01:36 · 118 阅读 · 0 评论 -
线程的通讯
线程的通讯:一个线程完成了自己任务时,要通知另一个线程完成另一个任务wait():等待 如果线程执行了wait方法,那么线程会进入等待状态,等待状态下的线程必须要被其他线程调用notify方法才能唤醒notify():唤醒 唤醒等待的线程练习:生产者与消费者class Product{ String name; //名字 double price; //价格 bool...原创 2019-08-18 15:06:45 · 84 阅读 · 0 评论 -
集合
集合是存储对象数据的集合容器集合比数组的优势:1.集合可以存储任意类型的对象数据,数组只能存储只能存储同一种数据类型的数据2.集合的长度是可以发生变化的,数据的长度是固定的集合的体系:单列集合:-------| Collection 单列集合的根接口---------| List 如果是实现了list接口的集合类,具备的特点:有序,可重复-----------| ArrayLi...原创 2019-08-18 15:26:52 · 147 阅读 · 0 评论 -
IO流(input,output)
IO技术主要作用:用于解决设备与设备之间的数据传输问题IO技术的应用场景:导出报表,上传文件,下载,解析xml文件IO流分类:按照数据流向分:1.输入流2.输出流判断使用输入流还是输出流的依据:以当前程序作为参照物,观察数据是流入还是流出,如果是流出,则使用输出流,如果数据是流入,怎使用输入流按照处理单位来分:1.字节流:字节流读取的都是文件中的二进制数据,读取到的二进制数据不...原创 2019-09-01 11:45:16 · 266 阅读 · 0 评论 -
File类
使用File类描述文件或者文件夹File类构造方法:1.File(File parent,String child)根据parent抽象路径和child路径名字符串创建一个新的File实例2.File(String pathname)通过给定路径名字符串转换为抽象路劲名来创建一个新的File实例3.File(String parent,String child)路径问题:1.绝对路径:...原创 2019-09-01 12:35:23 · 480 阅读 · 1 评论 -
线程的生命周期
运行状态下的线程,一旦执行了sleep或者wait方法之后,那么该线程会临时进入阻塞状态,如果是调用了sleep方法进入临时阻塞状态,那么线程一旦超过了指定的睡眠时间,那么就会重新进入可运行状态,如果调用了wait方法进入临时阻塞状态,那么需要其他线程唤醒该线程才可以重新进入可运行状态。...原创 2019-08-17 14:45:18 · 89 阅读 · 0 评论 -
线程
进程:正在执行的程序称为进程。进程负责了内存空间的划分线程:线程在一个进程中负责了代码的执行,就是进程中一个执行的路径多线程:在一个进程中,有多个线程同时在执行不同的任务多线程的好处:1.解决了一个进程能执行多个任务的问题2.提高了资源的利用率多线程的弊端1.增加了cpu的负担2.降低了一个进程中线程的执行效率3.会引发线程安全问题4.出现了死锁现象如何创建多线程:方...原创 2019-08-17 14:31:14 · 75 阅读 · 0 评论 -
String类的简单了解
String str1="hello"; String str2="hello"; String str3=new String("hello"); String str4=new String("hello"); System.out.println(str1==str2); System.out.println(str2==str3); System.out.pri...原创 2019-08-16 15:36:49 · 195 阅读 · 2 评论 -
数组去重
public class Demo8 { public static void main(String[] args) { // TODO Auto-generated method stub int[] arr={10,9,10,45,10,8,10}; arr=clearRepeat(arr); System.out.print("新数组元素为"+Arrays.toStrin...原创 2019-08-16 16:15:18 · 107 阅读 · 3 评论 -
String类的一些构造方法了解
一、构造方法1.string()创建一个空内容的字符串对象2.string(byte[ ] bytes)使用一个字节数组创建一个字符串对象 byte[] buf={97,98,99}; String str=new String(buf); System.out.println(str);3.string(byte[ ] bytes,int offset,int length...原创 2019-08-16 16:36:45 · 138 阅读 · 0 评论 -
集合7——Map
双列集合:-------| Map如果是实现了Map集合类,具备的特点:存储的数据都是以键值对的形式存在的,键不可重复,值可重复---------| HashMap 底层基于哈希表实现---------| TreeMap 基于红黑树数据结构实现的,会对元素的键进行排序存储---------| HashTable 底层依赖了哈希表实现的,实现方式与HashMap一致,但HashTable是线...原创 2019-08-22 09:06:03 · 105 阅读 · 0 评论 -
集合8——HashMap
HashMap的存储原理:往HashMap添加元素时,首先会调用键的hashcode方法得到元素的哈希码值,然后经过运算就可以算出该元素在哈希表中的存储位置情况1.如果算出的位置目前没有任何元素存储,那么该元素可以直接添加到哈希表中情况2.如果算出的位置目前已经存在其他元素,那么还会调用该元素的equals方法与这个位置上的元素进行比较,如果equals方法返回的是false,那么该元素允许...原创 2019-08-22 09:19:22 · 88 阅读 · 0 评论 -
String类的一些方法简单介绍
一、获取方法1.int length():获取字符串长度 String str="hello"; System.out.println("字符串长度为:"+str.length());2.char charAt(int index):获取特定位置字符 String str="hello"; System.out.println("第四个字符是:"+str.charA...原创 2019-08-17 11:03:08 · 115 阅读 · 0 评论 -
StringBuffer类的常用方法简单介绍
StringBuffer类:存储字符的容器笔试题目:使用StringBuffer无参的构造函数创建一个对象时,默认的初始容量为多少,如果长度不够,自动增长多少答:使用StringBuffer无参的构造函数创建一个对象时,默认的初始容量为16,长度不够时,自动增长1倍StringBuffer类的方法:一、添加方法1.append(boolean b):可以添加任意类型数据 Strin...原创 2019-08-17 11:39:52 · 403 阅读 · 0 评论