![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
leevmh
这个作者很懒,什么都没留下…
展开
-
Java语法糖
for VS for-each 优点: for-each 1从JDK5.0开始引入 for-each 语法更简洁 for-each 避免越界错误 缺点: for 可以删除元素,for-each不可以删除/替换元素 for-each遍历的时候,是不知道当前元素的具体位置索引 for-each只能正向遍历,不能反向遍历 for-each不能同时遍历2个集合 for和for-each性能接近。 枚举类型 枚举变量:变量的取值只在一个有限的集合内。 enum Weekday { M原创 2020-06-29 00:07:40 · 1331 阅读 · 0 评论 -
Java集合
集合 Java标准库自带的java.util包提供了集合类:Collection,它是除Map外所有其他集合类的根接口。Java的java.util包主要提供了以下三种类型的集合: List:一种有序列表的集合,例如,按索引排列的Student的List; Set:一种保证没有重复元素的集合,例如,所有无重复名称的Student的Set; Map:一种通过键值(key-value)查找的映射表集合,例如,根据Student的name查找对应Student的Map。 最后,Java访问集合总是通过统一的方原创 2020-05-21 15:23:29 · 137 阅读 · 0 评论 -
Java多线程(三)线程管理
wait()和notifyAll() synchronized解决了多线程竞争的问题,但是synchronized并没有解决多线程协调的问题。 多线程协调运行的原则就是:当条件不满足时,线程进入等待状态;当条件满足时,线程被唤醒,继续执行任务。 我们可以使用wait()和notifyAll()解决多线程协调运行: wait()使线程进入等待状态; notifyAll()唤醒当前锁对象的所有等待线程; wait()和notifyAll()需要使用在锁对象上。在synchronized修饰的方法中,就是th原创 2020-05-17 20:47:04 · 103 阅读 · 0 评论 -
Java多线程(二)Java多线程信息共享
Java通过共享变量在多个线程中共享消息: 静态变量 同一个Runnable类的成员变量 public class ThreadDemo0 { public static void main(String [] args) { new TestThread0().start(); new TestThread0().start(); new TestThread0().start(); new TestThread0().start(); } } class TestThread0原创 2020-05-17 15:41:11 · 134 阅读 · 0 评论 -
Java多线程(一)创建和启动
Java多线程创建 创建Java多线程有两种方式: java.lang.Thread – 线程继承Thread类,实现run方法。 java.lang.Runnable接口 – 线程实现Runnable接口,实现run方法。 public class Thread1 extends Thread{ public void run() { System.out.println("hello"); } public static void main(String[] a) { new Thre原创 2020-05-17 14:56:06 · 118 阅读 · 0 评论 -
文件IO
InputStream InputStream并不是一个接口,而是一个抽象类,它是所有输入流的超类。 这个抽象类定义的一个最重要的方法就是int read(),签名如下: public abstract int read() throws IOException;这个方法会读取输入流的下一个字节,并返回字节表示的int值(0~255)。如果已读到末尾,返回-1表示不能继续读取了。 ...原创 2020-05-15 19:18:26 · 109 阅读 · 0 评论 -
File对象
创建File对象 public class Main { public static void main(String[] args) { //构造一个File对象需要传入一个路径 File f = new File("C:\\Windows\\notepad.exe"); System.out.println(f); } } 注意:Windows平台使用\作为路径分隔符,在Java字符串中需要用\\表示一个\。Linux平台使用/作为路径分隔符。原创 2020-05-15 15:33:35 · 489 阅读 · 0 评论 -
static、final和常量设计
static修饰符 静态变量 static变量只依赖于类存在(通过类即可访问),不依赖于对象实例存在。 所有实例共享该字段。 静态方法 调用静态方法不需要实例,通过类名就可以调用。 在静态方法中,只能使用静态变量,不能使用非静态变量,也不能使用this。 静态态方法常用于工具类和辅助方法。 static块 这段代码只运行一次,只在类第一次被加载时调用。 执行顺序:static块 > 匿名块 > 构造函数。 final修饰符 final的类:不能被继承。 final方法:父类中如果原创 2020-05-14 12:11:24 · 162 阅读 · 0 评论 -
equals()和hashcode()
== 和 equals的区别 ==被我们常用来比较基本数据类型的值,对于比较对象时我们一般是使用equals方法的,我们知道所有的类都是继承自Object类的。其实在Object中的equals方法就是使用==来比较的。 也就是说==也是可以用来比较对象的,正如Object类中一样。但是如果用双等号比较对象,比较的是对象在内存中的地址,而不是值。所以一般在我们的业务场景中,例如: public class House { private int houseShape;// 房子户型 priv转载 2020-05-10 18:42:30 · 80 阅读 · 0 评论 -
内部类
在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。 1.成员内部类 成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员)。 class Circle { private double radius = 0; public static int count =1; public Circle(double radius) {原创 2020-05-09 13:31:27 · 100 阅读 · 0 评论 -
Java多线程
创建新线程 public class Main { public static void main(String[] args) { Thread t = new Thread(() -> { System.out.println("start new thread!"); }); t.start(); // 启动新线程 } } Java用Thread对象表示一个线程,通过调用start()启动一个新线程; 线原创 2020-05-09 13:27:03 · 63 阅读 · 0 评论 -
Java的反射
反射(Reflection) 反射是框架设计的灵魂 一、反射的概述 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 一个类有:成员变量、方法、构造方法、包等等信息,利用反射技术可以对一个类进行解剖,把个个组成部分映射成一个个对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象. 注意:这里的Class原创 2020-05-09 13:22:22 · 213 阅读 · 0 评论 -
面向对象基础
1.方法 可变参数 用类型...定义,可变参数相当于数组类型: class Group { private String[] names; public void setNames(String... names) { this.names = names; } } 2.构造方法 如果我们自定义了一个构造方法,那么,编译器就不再自动创建默认构造方法 可以定义多个构造方法,编译器根据参数自动判断 可以在一个构造方法内部调用另一个构造方法,便于代码复用 3.方原创 2020-05-09 13:21:28 · 112 阅读 · 0 评论 -
Java快速入门
Java快速入门 Java数据类型 基本数据类型 整数类型:byte,short,int,long 浮点数类型:float,double 字符类型:char 布尔类型:boolean 引用数据类型 字符串类型 String +连接字符串和其他数据类型 从Java 13开始,字符串可以用"""..."""表示多行字符串 数组类型 Array 数组所有元素初始化为默认值,整型都是0,浮点型是0.0,布尔型是false; 数组一旦创建后,大小就不可改变。 流程控制 输入和输出(print和原创 2020-05-09 13:17:45 · 107 阅读 · 0 评论