java基础
认真学java的秃头小白
这个作者很懒,什么都没留下…
展开
-
String类、System类
所处是java.lang包中1.是一个final类型,不能有子类。’2.在java中只要出现字面值字符串都作为该类的一个实例对象,即不需要使用new就可以创建对象。3.字符串是常量,创建后不能修改,是要被共享的。4.字符串的底层原理是一个字符数组。构造方法:new String(): 创建空字符序列的对象 ,字符串长度为0.new String(String str) :以str构造字符串对象new String(byte[] by) :将字节数组转为字符串,使用平台默认编码表new S原创 2021-03-17 22:40:51 · 144 阅读 · 0 评论 -
多个不同对象,按某个字段排序
在项目中遇到三个不同的对象list集合,现按照时间顺序将其排序: HashMap<String,Object> param = new HashMap<>(); //现有集合as、bs、cs:list集合对象 List<对象A> as ; as.stream().forEach(A-> { param.put(A.getId(),A); }); List<B&g原创 2022-05-23 10:44:05 · 316 阅读 · 0 评论 -
File类
位置:java.io包中目的:用来封装与文件有关信息的对象,切记不能操作文件中的数据。与文件有关的信息包括路径(目录)信息:绝对路径:路径的完整信息形式,即带有磁盘名的相对路径:不带有磁盘名,相当于在当前路径下表示的路径,例eclipse的相对路径是在此项目的文件夹下File对象也能直接封装路径相关信息。构造方法:File(String pathname)File(String parent,String child)File(File parent,String child)注意:创原创 2021-03-27 15:19:48 · 92 阅读 · 0 评论 -
泛型
字面含义:广泛的类型。当定义某一个类型时,不确定要操作的类型,可以使用泛型。格式:<要操作的类型>,注意:只能是引用类型。好处:该技术是在jdk5.0版本出现的,可以认为属于一种安全机制,可以将运行时期出现的问题提前至编译时期。避免强转操作。弊端:仅仅只能操作泛型上的类型数据,其他类型不能操作。类型推断:左边写了<>,并指定了泛型的类型,那么右边只要保留<>即可‘eg:ArrayList list = new ArrayList<>();自定义泛型原创 2021-03-24 23:20:28 · 66 阅读 · 0 评论 -
格式化与打印流
格式化输入:System.in:类型 InputStream.标准的输入流,默认数据源-键盘。更改数据源:System.setIn(InputStream in)格式化输出:System.out/System.err:标准输出/错误流默认输出目的地:控制台对应类型 :PrintStream 字节流(打印流)更改默认目的地:System.setOut(PrintStream out)...原创 2021-03-28 15:33:06 · 107 阅读 · 0 评论 -
CSS
总结:常见的css样式:文本样式、背景样式、边框、边框圆角、尺寸、伪类选择器、盒模型、布局样式:浮动、定位 标签显示效果div:在页面布局中,主要作为承载内容的容器,没有任何的默认样式,所有的外观样式都需要我们自己调整css:用来表现HTML样式的计算机语言,为html化妆CSS的引入方式:1、行间引入:在标签行间。使用style属性,来为标签设置css样式,样式选取时优先级高如:《div style=“width:200px;height=200px;”》《/div》2、内部引入:在h原创 2021-04-13 19:21:23 · 73 阅读 · 0 评论 -
HTML
HTML:超文本标记语言。(超文本:网页中的呈现定义的内容不局限于文本,可加载图片、视频、音频等内容)注意:标记语言不是编程语言HTML基本文档结构如下::声明文档类型html:html文档的根标签head: 头标签,用于指定html一些属性和引入外部资源title:标题标签,设置当前页面的标题meta标签:指定当前页面的字符编码body:体标签,显示在页面中内容注释:HTML常见标签:一、标题标签:定义最大标题最小标题二、段落标签 :使文本独立成段其中属性有:ali原创 2021-04-12 22:45:20 · 78 阅读 · 0 评论 -
接口
在jdk 1.7以前接口中只能有常量和抽象方法jdk1.8中:允许定义带有方法体的方法默认方法:default修饰的方法静态方法:static修饰的方法默认方法:实现类中可以对该方法进行重写,也可以不重写。在实现类中,调用接口中的默认方法:1.直接调用(不能出现自己调自己)2.接口名.super.默认方法();实现了多个接口,接口中有相同的默认方法定义,实现类中必须重写该方法,如果想要调用父接口中的方法,父接口名.super.默认方法名()。...原创 2021-04-07 22:49:26 · 94 阅读 · 0 评论 -
反射
程序在运行中,可以获取某个类型中的成员(变量、方法、构造方法)。当class加载到内存中,就可以使用反射技术来实现对象的创建和成员的操作。不需要使用new关键字就可以创建对象。反射技术的源头就是:Class对象。1.获取Class对象方式a类名.classb对象.getClass()c.Class.forName(String 全类名)Class:位于java.langa包。该类的一个实例表示正在运行的某个类型类型:引用类型、基本类型、voidClass类中提供了一个方法:newI原创 2021-04-06 23:15:41 · 88 阅读 · 0 评论 -
类加载器以及java虚拟机
1.虚拟机加载类的机制虚拟机:执行class文件的,容器概念:虚拟机将描述类的数据的class文件加载到内存,并将这些数据进行校验、转换、解析、初始化的过程,最终形成java虚拟机能使用的java类型的数据什么时候加载类?1.创建对象实例时2.调用静态成员时(变量、方法)3.创建子类对象4.通过反射技术获取某个类型的Class对象时当程序执行到某一行时,需要使用某个类,内存中没有这个类,需要加载这个类。加载类的过程:1。加载:将class文件从硬盘中读取到内存中,并会为其创建一个Cla原创 2021-04-05 15:37:13 · 192 阅读 · 1 评论 -
UDP和TCP
UDP广播和组播:在当前所掌握的协议的基础上,进行通信:单播、广播、组播广播:模式:1对多固定IP:255.255.255.255实现效果:在同一个网络中。主机和其他主机实现共享数据组播:将信息进行共享,在同一个组中IP地址:244.0.0.0~255.255.255.255,不是这个区间会出异常套接字:MulticastSocket 它是DatagramSocket的子类对象。‘构造方法:MulticastSocket():创建多播套接字MulticastSocket(int p原创 2021-04-03 15:24:23 · 89 阅读 · 0 评论 -
关于java中计算机网络编程--实现两台电脑间通信
网络编程基本概念:计算机网络:总结:将不同地理位置,功能独立的多个计算机通过通信设备连接起来,实现数据共享网络编程:指的是在已有网络环境的前提下,进行数据的传输,对于发送端就是数据按照规定的协议进行打包,对于接收端根据规定的一些进行数据解析。网络通信的三要素:1.IP地址 2端口号 3协议IP地址:java.net包 网络包InetAddress用于描述IP地址这类事物的,用于表示网络计算机的唯一标识。Inet4Address:使用32位来表示,4个字节来表示,0~255Inet6原创 2021-03-31 20:06:24 · 2022 阅读 · 3 评论 -
线程池的理解
池是一个容器,这个容器中存储的是线程(已经创建好的)原因:多个任务并发执行,任务又比较小,大部分时间都耗费在线程的创建和销毁。线程的创建和销毁需要调用底层的系统资源,这样就会很消耗资源。当创建好线程池,内部就会有线程对象,任务过来,有一个线程对象就去执行任务。任务执行结束,它也不会销毁,而是回到线程池中,等到下一个任务。在java中,有封装好的线程池对象,供我们使用,不需要自己手动创建线程池。通过java.util.concurrent包中的Executors类中的静态方法来创建线程池。方法的返原创 2021-03-31 19:33:25 · 162 阅读 · 0 评论 -
线程生命周期
理解:从线程创建到线程消亡的过程。过程中划分了几种状态。不同状态描述不同信息。新建状态:创建线程对象:new Thread(…)就绪状态(可运行状态):调用start方法后的状态(一切都准备好,等待CPU的调度)运行状态:执行run方法(CPU来了)消亡态:run方法执行结束出现异常调用方法stop、destory(过时) 线程退出执行阻塞状态:从运行到阻塞,接触阻塞回到就绪主动放弃执行资格,意味着CPU不调度sleep()、wait()—notify()以上的线程的各原创 2021-03-30 20:22:12 · 81 阅读 · 0 评论 -
枚举
数组[]类:class接口:interfacejdk5.0之后出现的新类型。枚举也是类,只不过是特殊的类,编译后生成的也是class文件。关键字:enum格式:修饰符 enum 枚举类名{ }枚举类中定义的枚举值:都是该类的一个实例对象枚举值:通常都是大写字母或单词组成,中间使用逗号分隔,最后一个可以加分号也可以不加分号。如果还有其他内容,必须加分号。enun 枚举名{A,B,C;}访问枚举值:枚举类名.枚举值名某种类型创建的对象个数是有限的,使用枚举来定义。如季节、性原创 2021-03-30 20:11:49 · 128 阅读 · 0 评论 -
线程安全问题
问题:模拟窗口售票,总票数50张,两个窗口售票,运行结果出现同号票。比如下面代码:原因:两个线程执行的代码片段是同一段,对同一个ticket进行计算,t1线程对ticket计算还没有全部执行完,另一个线程参与进来执行,导致错误的数据产生。解决方式:对ticket变量的计算由始至终都是一个线程来操作,即使在执行过程中,其他线程由执行权,也不能参与对ticket的计算前提:1.两个或两个以上的线程2.保证多线程间看到的是同一个锁对象锁对象:可以是任意对象,没有限制。多线程对共享资源的所有操作放原创 2021-03-30 19:55:40 · 75 阅读 · 0 评论 -
数组内存理解
jvm启动时,会将内存划分为:寄存器:控制执行哪行代码本地方法区:调用的是底层方法的。方法区:代码堆:通过new创建的容器(对象、实体)都在堆中。栈:用于执行方法。先进先出。不同的区域,做不同的管理和计算,提高效率int[] arr = new int [3];内存中的过程:步骤:1.在堆中开辟空间,并分配地址值2.在该空间中,存储默认值3.将地址值赋值给引用变量arr4.arr指向了或引用了该空间输出arr,结果是:[I@15db9742[ :代表一维数组I:数组的元原创 2021-03-30 17:28:46 · 140 阅读 · 0 评论 -
进程、线程、多线程
进程:正在进行中的程序,需要资源:内存、cpu。线程:属于进程,指的是一个可以独立运行的代码片段(执行单元、执行路径)。一个进程中有多个可以独立运行的执行单元,这样的进程称之为多线程的进程。一个进程中至少有一个线程,这样的进程称之为叫做单线程的进程。多线程的进程共享同一块内存空间。CPU在执行时,某一时刻只能执行一个进程,做着高速的切换动作,导致看到的是貌似同时执行的效果(单核)。CPU执行线程的时间是不确定的。抢占式方式抢占CPU的调度。并行和并发:并行:多个任务同时执行,在某一时刻每个原创 2021-03-29 20:02:34 · 130 阅读 · 0 评论 -
java重写和重载的区别
方法的重写规则参数列表与被重写方法的参数列表必须完全相同。返回类型与被重写方法的返回类型可以不相同,但是必须是父类返回值的派生类(java5 及更早版本返回类型要一样,java7 及更高版本可以不同)。访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为 public,那么在子类中重写该方法就不能声明为 protected。父类的成员方法只能被它的子类重写。声明为 final 的方法不能被重写。声明为 static 的方法不能被重写,但是能够被再次声明。原创 2021-03-20 10:55:50 · 132 阅读 · 0 评论 -
Java 修饰符
Java 修饰符Java语言提供了很多修饰符,主要分为以下两类:访问修饰符非访问修饰符修饰符用来定义类、方法或者变量,通常放在语句的最前端访问控制修饰符Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)public : 对所有类可见。使原创 2021-03-20 10:30:58 · 80 阅读 · 0 评论 -
Java变量
Java语言支持的变量类型有:类变量:独立于方法之外的变量,用 static 修饰。实例变量:独立于方法之外的变量,不过没有 static 修饰。局部变量:类的方法中的变量。Java 局部变量局部变量声明在方法、构造方法或者语句块中;局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;访问修饰符不能用于局部变量;局部变量只在声明它的方法、构造方法或者语句块中可见;局部变量是在栈上分配的。局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以原创 2021-03-20 10:18:31 · 63 阅读 · 0 评论 -
基本数据类型转换
自动类型转换整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。转换从低级到高级。低 ------------------------------------> 高byte,short,char—> int —> long—> float —> double数据类型转换必须满足如下规则:1. 不能对boolean类型进行类型转换。2. 不能把对象类型转换成不相关类的对象。3. 在把容量大的类型转换为容量小的类原创 2021-03-20 10:13:20 · 107 阅读 · 0 评论 -
Object类
类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法关于其中的方法:一、boolean equals(Object obj): 比较两个对象是否相同,比较的是两个对象的地址值==:1.两边基本类型,比较的是数值2.两边是引用类型,比较的是地址值equals():比较的是地址值。这样的比较是没有意义的,因此这个方法通常会被重写,建立有意义的比较。通常都是属性信息的比较。二、 int hashCode() : 返回的是对象的哈希码值原创 2021-03-17 22:14:02 · 154 阅读 · 0 评论 -
jar包、类库
1.jar包:可以理解为是一个压缩包,它将编译后的多个class文件进行压缩得到的jar包。怎么创建自己用的jar包: 选中要打包的文件(包、指定的文件、项目)—右键–export —java—jar file,注意创建的项目必需要包名package语句。导入jar包: 选中项目名–右键—folder(先创建一文件夹名为 lib)—选中jar文件,复制到lib文件夹中,选中jar文件,右键—add to build path删除jar包:找到lib,右键删除jar文件,项目右键–build path原创 2021-03-17 22:07:21 · 559 阅读 · 0 评论