java
piepis
DT时代的一块砖
展开
-
Java- 线程
多线程进程与线程的关系进程是一个应用程序(1个进程是一个软件)线程是一个进程中的执行场景/执行单元一个进程可以启动多个线程对于java程序来说,会先启动jvm(一个进程),jvm再启动一个主线程调用main方法。同时再启动一个垃圾回收线程负责看护,回收垃圾。所以一个java程序至少有两个线程并发。注意:进程A和进程B的内存独立不共享(因为分属于不同的软件)在java语言中线程A与线程B,堆内存和方法区内存共享;但是栈内存对立,一个线程一个栈在使用了多线程机制后,main方法结束只是主线程原创 2020-09-04 19:53:19 · 119 阅读 · 0 评论 -
Java- 集合概述
集合概述什么是集合?有什么作用所有的集合类和集合节后都在java.util包下集合不能直接存储基本数据类型,另外集合也不能直接存储java对象,集合当存储的都是java对象的内存地址。(或者说集合中存储的都是引用)list.add(100);//自动装箱Integer注意:集合在java中本身是一个容器,是一个对象。集合中任何时候存储的都是“引用”。在java中每一个不同的集合,底层会对应不同的数据结构。往不同的集合中存储元素等于将数据放到不同的数据结构中。实现类底层数据结原创 2020-09-04 13:44:36 · 166 阅读 · 0 评论 -
Java- 键值对集合
键值对集合HashMapHashMap集合底层是哈希表数据结构,是非线程安全的。HashtableHashtable集合底层也是哈希表数据结构,是线程安全的,其中所有的方法都带synchronized关键字,效率较低,现在使用较少了,因为控制线程安全有其他更好的方案。PropertiesProperties是线程安全的,因为继承HashTable,另外Properties存储元素的时候采用key和value的形式存储,并且key和value只支持String类型,不支持其他类型。Proper原创 2020-09-04 13:41:46 · 2248 阅读 · 0 评论 -
Java- 有序集合
集合概述什么是集合?有什么作用所有的集合类和集合节后都在java.util包下集合不能直接存储基本数据类型,另外集合也不能直接存储java对象,集合当存储的都是java对象的内存地址。(或者说集合中存储的都是引用)list.add(100);//自动装箱Integer注意:集合在java中本身是一个容器,是一个对象。集合中任何时候存储的都是“引用”。在java中每一个不同的集合,底层会对应不同的数据结构。往不同的集合中存储元素等于将数据放到不同的数据结构中。有序集合ListAr原创 2020-09-04 13:00:07 · 2184 阅读 · 0 评论 -
死锁机制
百度词条死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程java代码实现package DeadLock;public class DeadLock { public static void main(String[] args) { Object o2 = new Object(); Object原创 2020-08-20 18:40:02 · 300 阅读 · 0 评论 -
Java- String类
public class StringTest01 { public static void main(String[] args) { // 这两行代码表示底层创建了3个字符串对象,都在字符串常量池当中 String s1 = "abcdef"; String s2 = "abcdef" + "xy"; //凡事双引号括起来的都在字符串常量池中有一份 //new 对象的时候一定在堆内存当中开辟空间 .原创 2020-08-07 00:35:11 · 90 阅读 · 0 评论 -
Java --String ,int, Integer类型转换
转换关系如图演示代码public class IntegerTets03 { public static void main(String[] args) { // String --> int String s1 = "100"; int i1 =Integer.parseInt(s1); System.out.println(i1+1);//101 //int -->String原创 2020-05-21 10:00:54 · 187 阅读 · 0 评论 -
数组:模拟栈数据结构
题目编写程序,使用一维数组,模拟栈数据结构要求这个栈可以存储java中任何引用数据类型的数据在栈中提供push方法模拟压栈。 (栈满,有提示)在栈中提供pop方法模拟弹栈 (栈空,也有提示)编写测试程序,new栈对象,调用push,pop方法来模拟压栈弹栈的动作不传参数时,默认初始化时栈空间容量为10思路public class MyStack {//栈类 提供一个数组来存储栈中的元素 Object[] elements; 栈帧(永远指向栈顶部的元原创 2020-05-13 14:42:04 · 375 阅读 · 0 评论 -
Java-一维数组总结
Array综述java 语言中的数组是一种引用数据类型。不属于基本数据类型,数组的父类是 object。数组实际上是一个容器,可以同时容纳多个元素(数组是一个数据的集合)数组: 字面意思是"一组数据"数组当中可以存储"基本数据类型"的数据,也可以存储"引用数据类型" 的数据数组因为是引用类型,所以数组对象是堆内存当中(数组是存储在堆内存当中的)数组当中如果存储的是"Java对象" 的话,实际上存储的是对象的"引用(内存地址)"数组一旦创建,在java 中规定,长度不可变(数组长度不可以变)原创 2020-05-13 02:23:27 · 510 阅读 · 0 评论 -
Java面向对象的首要特征:封装
面对对象的三大特征:封装继承多态有了封装,才能继承,有了继承,才能说多态定义什么是封装?封装有什么好处?是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个密不可分的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部细节,只保留一些对外接口使之与外部发生联系,系统的其他对象只能通过包裹在数据外面的已被授权的操作来与这个封装的对象进行交流和交互。封装的作用有...原创 2020-04-25 11:59:51 · 164 阅读 · 0 评论 -
Java构造方法
知识点当一个类中没有提供任何的构造方法,系统默认提供一个无参数的构造方法。这个无参数的构造方法叫做缺省构造器当一个类中手动的提供了构造方法,那么系统将不再提供无参数的构造方法。建议将无参数的构造方法手动写出来,这样系统就不会在不传参数的时候new报错了无参数构造方法和有参数的构造方法都可以调用。student x = new student();student y = new stud...原创 2020-04-25 00:20:33 · 302 阅读 · 0 评论 -
方法调用时的参数传递
概念不管你时基本数据类型,还是引用数据类型,实际上传递的时候都是将变量中保存的那个"值" 复制一份,传过去int x=1;int y=x; 把x中保存1复制一份传给yx和y都是两个局部变量Person p1 =0x1234;Person p2 = p1;把p1中保存的0x1234复制一份传给p2p1 和p2 都是两个局部变量代码public class Test2{...原创 2020-04-24 13:26:52 · 567 阅读 · 0 评论 -
学习java中空指针异常
定义当应用程序试图在需要对象的地方使用 null 时,抛出该异常出现空指针异常的前提条件是?“空引用” 访问实例相关【对象相关】相关的数据时,都会出现空指针异常。垃圾回收器: GC在java语言中,垃圾回收器主要针对的是堆内存。当一个java对象没有任何引用指向该对象的时候,GC会考虑将该垃圾数据释放回收掉public class NullPointerTest{ pub...原创 2020-04-24 12:34:30 · 234 阅读 · 0 评论 -
创建对象对应的jvm内存图(二)
引用和对象的区别引用和对象怎么区分?"引用"是啥? 是存储对象内存地址的一个变量。"对象"是啥? 堆内存中new出来的简单说:只要这个变量中保存的是一个对象的内存地址,那么这个变量就叫做"引用"思考: 引用一定是局部变量吗?不一定,成员变量也可以是一个引用举例说明:public class User{ //类 = 属性+ 方法 //以下3个都是属性,都是实例变量...原创 2020-04-24 02:25:40 · 193 阅读 · 0 评论 -
创建对象对应的jvm内存图(一)
为什么要画内存图?有了内存图,程序不运行,我也知道结果(可以推荐出结果)有了内存图,有助于你调试程序。 画内存图是对java运行机制的一种理解,不知道运行机制,以后复杂的程序出现错误后,不会调试,调也不明白画内存图注意事项在内存图上不要体现出代码,内存上应该主要体现"数据"画图的时候,图上的图形应该有先后顺序,先画什么,再画什么,必须是有顺序的,而不是 想起来什么就画什么,想起哪个...原创 2020-04-24 00:19:13 · 358 阅读 · 0 评论 -
java方法重载方法总结
java方法重载方法总结什么时候需要考虑使用方法重载?在同一个类中,如果"功能1"和"功能2"它们的功能相似那么可以考虑将它们的方法名一致,这样代码既美观,又便于后期代码的编写(容易记忆,方便使用)注意:方法重载overload 不能随便使用,如果两个功能压根不相干,不相似,根本没关系,此时两个方法使用重载机制的话,会导致编码更麻烦,无法进行方法功能的区分。什么时候会发生方法重载?...原创 2020-04-21 18:00:15 · 364 阅读 · 0 评论 -
Java连接Redis
安装Redis各系统安装不一致,这里仅提供Mac 使用brew安装教程(window安装教程入口)brew install redis;使用 redis-cli; 连接redis并使用ping 测试是安装成功。java代码连接使用的第三方包 <dependency> <groupId>redis.clients</g...原创 2019-11-28 09:49:00 · 115 阅读 · 0 评论 -
Java继承,接口,抽象类习题练习
类的称呼:题目如图:解答:图二public abstract class Top{ }public class Tip extends Top { }图三public abstract class Fee { }public abstract class Fi extends Fee {}图四public interface Foo{ }public class B...原创 2019-07-16 20:45:36 · 3210 阅读 · 0 评论 -
在CentOS7.4中yum安装jdk的方法及配置环境变量
安装jdk查看centos 是否已安装过jdk列举匹配已安装的java的软件包:yum list installed | grep java卸载安装的jdk:(yum命令参考:http://man.linuxde.net/yum)yum -y remove java-1.7.0-openjdk* yum -y remove java-1.8.0-openjdk*利用yum源来安装...原创 2019-04-26 19:34:49 · 508 阅读 · 0 评论 -
剑指Offer(二):替换空格
题目请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。思路最简单的方法就是从头到尾遍历,但是时间复杂度为O(n^2)。本文采用一种时间复杂度为O(n)的方法。我们可以先遍历一次字符串,这样就可以统计出字符串空格的总数,并可以由此计算出替换之后的字符串的总长度。每替换一个空格,长度增...原创 2019-03-25 18:24:28 · 169 阅读 · 0 评论 -
剑指Offer(一):二维数组中查找最大值
题目这个题目说的是,给你一个二维数组 matrix,和一个目标值 target。你要在数组里找到这个目标值,然后返回它的行/列下标。如果找不到,则返回 [-1,-1]。这个数组的每一行都是从左向右递增,每一列都是从上到下递增。和「二维数组的二分搜索」不同,这道题目并不保证每一行的第一个数都比上一行的最后一个数要大。比如说,给你的二维数组是:1, 3, 52, 4, 6给你的目标值是...原创 2019-03-22 10:03:38 · 10440 阅读 · 0 评论 -
java环境安装配置
#第一步##下载Mac版JDK下载地址:jdk1.8// 同意协议并点击下载##查看安装路径打开终端,输入:/usr/libexec/java_home -V注意:输入命令参数区分大小写(-v是不对的,必须是-V)如图:3个红框内依次为:输入命令;当前Mac已安装jdk目录;Mac默认使用的jdk版本;第二步配置环境变量其中:bin目录下存放JDK用于开发的一些终...原创 2018-11-24 13:23:51 · 495 阅读 · 0 评论