自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 Java注解和反射

注解Annotation的作用:不是程序本身,可以对程序作出解释(这一点和注释(comment)没什么区别)可以被其他程序(例如:编译器等)读取Annotation的格式@注释名,还可以添加一些(参数值)Annotation在哪里使用我们可以在package,class,method,field等上面,相当于给他们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些元数据的访问内置注解@Override@Deprecated 不推荐程序员使用,或者存在更好的方

2022-03-10 21:33:43 235

原创 GUI(接口回调,观察者模式)

接口回调public class Frame1 extends Frame implements Frame2.MoneyListener { private Label label = new Label("金额:"); private Button button = new Button("购买"); public Frame1() { this.setSize(400,200); this.setLayout(new FlowLayout())

2022-03-08 11:41:25 158

原创 Java网络编程

网络编程网络编程中有两个主要的问题如何准确的定位到网络上的一台或多台主机找到主机后如何通信网络编程中的要素IP和端口号网络通信协议 udp tcp万物皆对象IPip地址:InetAddress唯一定位一台网络上的计算机127.0.0.1:本机 localhostip地址的分类IPV4/IPV6公网:(互联网)私网:(局域网)InetSockedAddresspublic class Demo1 { public static void mai

2022-03-05 17:02:16 781

原创 Java多线程(五)

常见线程安全集合线程不安全集合变成线程安全集合public class Demo1 { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); //方法1// List<String> synlist = Collections.synchronizedList(list); //方法

2022-03-03 18:25:28 70

原创 Java多线程(四)

Lock通过显示定义同步锁对象来实现同步,同步锁使用Lock对象充当ReentrantLock类(可重入锁)实现了Locksynchronized与Lock的对比Lock是显示锁(手动开启和关闭锁),synchronized是隐式锁,出了作用域自动释放Lock只有代码块锁使用Lock锁,JVM将花费较少的时间来调度线程,性能更好。并且具有更好的扩展性(提供更多的子类)优先使用顺序:Lock>同步代码块>同步方法class Lock2 implements Runnabl

2022-03-03 16:06:17 1182

原创 Java多线程(三)

线程同步并发:同一个对象被多个线程同时操作多个线程访问同一个对象,并且某些线程还想修改这个对象,这个时候就需要线程同步。线程同步是一种等待机制,多个需要同时访问此对象的线程进入对象的等待池形成队列,等待前面线程使用完毕,下一个线程再使用线程同步形成条件:队列+锁(锁机制,synchronized)解决安全性问题缺点:一个线程持有锁会导致其他需要此锁的线程挂起在多线程竞争下,加锁,释放锁会导致比较多的上下文切换和调度延时,引起性能问题如果一个优先级高的线程等待一个优先级低的线程释放

2022-03-02 16:30:29 48

原创 Java多线程(二)

Lambda表达式理解Functional Interface(函数式接口)函数式接口的定义:任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口对于函数式接口,我们可以通过lambda表达式来创建该接口的对象public class Demo1 { //3.静态内部类 static class Like2 implements ILike{ @Override public void lambda() {

2022-03-01 16:03:20 45

原创 Java多线程(一)

线程概念程序时指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念进程是执行程序的一次执行过程,它是一个动态的概念。是系统资源分配的单位通常在一个进程中可以包含若干个线程,一个进程至少包含一个线程。线程是CPU调度和执行的单位很多多线程是模拟出来的,真正的多线程是有多个CPU,即多核,如服务器。如果是模拟出来的多线程,即在一个CPU的情况下,在同一时间点,CPU只能执行一个代码,因为切换的很快,所有就有同时执行的错觉核心概念线程就是独立的执行路径在程序运行时,即使没有自

2022-02-28 16:18:24 107

原创 Java I/O框架(流(下))

字符流字符流的父类(抽象类):Reader:字符输入流Writer:字符输出流文件字符流FileReaderFileWriter只能复制文本文件,不能复制图片等二进制文件 public static void main(String[] args) throws Exception{ FileReader fr = new FileReader("d:\\hello.txt");// int data = 0;// //一

2022-02-26 23:24:58 133

原创 Java I/O框架(流(上))

流概念:内存与存储设备之间传输数据的通道流的分类按方向(重点):输入流:将<存储设备>中的内容读入到<内存>中输出流:将<内存>中的内容写入到<存储设备>中按单位:字节流:以字节为单位,可以读写所有数据字符流:以字符为单位,只能读写文本数据按功能:节点流:具有实际传输数据的读写功能过滤流:在节点流的基础上增强功能字节流字节流的父类是两个抽象类:InputStream:字节输入流,这个抽象类是表示输入字节

2022-02-26 14:16:38 121

原创 Java集合框架(Map)

Map集合Map接口的特点用于存储任意键值对(key-value)键:无序,无下标,不允许重复值:无序,无下标,允许重复Map接口的常用方法V get(Object key): 返回 Map 集合中指定键对象所对应的值。V 表示值的数据类型V put(K key, V value): 向 Map 集合中添加键-值对,返回 key 以前对应的 value,如果没有, 则返回 nullV remove(Object key): 从 Map 集合中删除 key 对应的键-值对,返回 k

2022-02-16 20:00:03 288

原创 Java集合框架(Set接口)

Set接口特点:无序,无下标,元素不可重复方法:全部继承自Collection中的方法Set实现类HashSet public static void main(String[] args) { //创建集合 HashSet<String> set = new HashSet<>(); set.add("apple"); set.add("melon"); set.add("orian

2022-02-16 13:13:48 131

原创 Java集合框架(泛型)

泛型其本质是参数化类型,把类型作为参数传递常见形式有泛型类、泛型接口、泛型方法<E,…> E称为类型占位符,表示一种引用类型好处:提高代码的重用性防止类型转换异常,提高代码的安全性不能实例化泛型只能使用引用类型不同泛型类型对象之间不能相互赋值泛型类public class Demo10<T> { //使用泛型 //创建变量 T t; //作为方法的参数 public void show(T t){

2022-02-15 17:22:02 170

原创 Java集合框架(List接口)

List接口特点:有序,有下标,元素可以重复 public static void main(String[] args) { //先创建集合对象 List list = new ArrayList<>(); list.add("su"); list.add("wang"); list.add(0,"zhang"); System.out.println(list.size());

2022-02-14 21:04:48 402

原创 Java集合框架(Collection)

集合对象的容器,定义了对多个对象进行操作的常用方法。可实现数组的功能。和数组区别:数组长度固定,集合长度不固定数组可以存储基本类型和引用类型;集合只能存储引用类型,如果要存储基本类型,对基本类型进行装箱位置:java.util.*;Collection 体系集合...

2022-02-12 14:49:52 157

原创 Java常用类(BigDecimal,Date,SimpleDateFormat,System)

BigDecimaldouble是近似值存储,需要借助BigDecimal才能精确运算 double d1 = 1.0; double d2 = 0.9; System.out.println(d1-d2); //0.09999999999999998BigDecimal执行除法运算时,除不尽会报错,给一个保留小数位数以及舍入模式divide(BigDecimal bd,int scal,RoundingMode mode)

2022-02-09 20:56:28 96

原创 Java常用类(String类)

String字符串是常量,创建之后不可改变。字符串字面值存储在字符串池中,可以共享。public static void main(String[] args) { //zhangsan存储在字符串池中 String name = "zhangsan"; //lisi赋值给name常量,并没有修改数据, // 而是重新开辟一个空间 //name的引用指向lisi name="lisi";

2022-02-09 13:34:17 99

原创 Java常用类(包装类)

包装类基本数据类型所对应的引用数据类型。基本数据类型包装类型byteByteshortShortintIntegerlongLongfloatFloatdoubleDoublebooleanBooleancharCharacter装箱把基本类型转换成引用类型的过程拆箱把引用类型转换成基本类型的过程8种包装类提供不同类型间的转换方式:Number父类中提供的6个共性方法parseXXX()静态方法

2022-02-08 19:49:00 57

原创 Java常用类(Object类)

Object类超类,基类,所有类的直接或间接父类,位于继承树的最顶层任何类,如果没有书写extends显示继承某个类,都默认直接继承Object类,否则为间接继承Object类中所定义的方法 ,是所有对象都具备的方法Object类型可以存储任何对象作为参数,可以接受任何对象作为返回值,可返回任何对象getClass()方法返回值类型为Classpublic class Student { private String name; private int age

2022-01-24 15:25:34 168 1

原创 Java常用类(内部类)

内部类概念:在一个类的内部再定义一个完整的类内部类也回生成class文件内部类可以直接访问外部类的私有成员,而不破坏封装可为外部类提供必要的内部功能组件public class Body { private String name="su"; public static void main(String[] args) { Body body = new Body(); body.new Header().show(); } cl

2022-01-23 14:06:32 195

原创 Java(异常)

异常try catch finally throw throwsctrl+alt+Tpublic class MyException extends Exception { //传递数字>10 private int detail; public MyException(int a) {// super(message); this.detail = a; }//异常的打印信息 @Override publi

2022-01-22 11:43:26 159

原创 Java(面向对象)

面向对象编程(oop)面向编程的本质是:以类的方式组织代码,以对象的形式(封装)数据。构造器和类名相同没有返回值一个类即使什么都不写,也会存在一个方法作用1:new 本质在调用构造器作用2:初始化对象的值注意点1:定义有参构造之后,如果想使用无参构造,需要显示的定义一个无参构造器快捷键:alt+insert封装高内聚,低耦合属性私有,get/set继承继承是类和类之间的一种关系,子类继承父类子类继承父类的全部方法类和类之间的关系还有依赖,组合,聚合等;CTR

2022-01-21 16:03:51 278

原创 Java基础(数组)

数组初始化 //静态初始化 int[] a = {1,3,45,5}; //动态初始化:包含默认初始化 int[] b = new int[10]; b[0] = 1;其长度是确定的。数组一旦被创建,它的大小就是不可以被改变的。其元素必须是相同类型的,不允许出现混合类型。数组中的元素可以是任何数据类型,包括基本类型和引用类型。数组变量属于引用类型,数组也可以看成是对象,数组中的每个元素都相当于是该对象的成员变量

2022-01-18 21:12:12 223

原创 Java基础(方法)

重载同一个类中定义多个同名方法,形参列表不同即可。实际调用时,根据实参的类型来决定调用哪一个方法,不根据方法返回值类型判断。命令行传参编译时进入Java文件所在文件夹运行时退回包的最上层文件夹可变参数在指定参数类型后加一个(…)一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在他之前声明。 public static void main(String[] args) { Demo4 demo4 = new Demo4();

2022-01-17 22:28:55 207

原创 Java基础(流程控制)

Scanner通过scanner类来获取用户输入基本语法 Scanner s = new Scanner(System.in);使用Scanner类的next()与nextline()获取输入数据在读取前使用hasNext()与hasNextLine()判断是否还有输入数据凡是属于IO流的类如果不关闭会一直占用资源scanner.close();next():1.不能得到带有空格的字符串2.有效字符之前的空白忽视3.只有输入有效字符后才将其后面输入的空白作为分隔符或结束符nextLin

2022-01-17 20:53:33 195

原创 java基础(变量,运算)

Java变量每个变量都必须声明其类型Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域变量作用域类变量:static实例变量:从属于对象;初始化值为0,0.0,false,null局部变量:方法中的变量,必须声明和初始化值public class Demo { //属性:变量 //类变量 static static double salary = 2500; //实例变量:从属于对象; 初始化默认值为 0,0.0,false, n

2022-01-06 16:56:50 212

原创 java基础(数据类型)

学习目标:Java坚持学习内容:Java零基础学习时间:提示:这里可以添加计划学习的时间例如:1、 周一至周五晚上 7 点—晚上9点2、 周六上午 9 点-上午 11 点3、 周日下午 3 点-下午 6 点学习产出:提示:这里统计学习计划的总量例如:1、 技术笔记 2 遍2、CSDN 技术博客 3 篇3、 学习的 vlog 视频 1 个...

2022-01-05 20:59:16 240

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除