
java基础
基础才是核心
因努力 果随缘
一个有故事的程序员
展开
-
网络编程之模型基础
osi 七层网络通讯模型、应用层:Http协议 文件服务器,邮件服务器表示层:数据转换解决我们不同系统的兼容问题会话层:建立与应用程序的会话连接传输层:提供端口号和传输的协议(TCP和UDP)网络层:为我们的数据实现路由 路由器,交换机数据链路层:传输的地址的帧以及错误的检测物理层:以二进制的形式,在物理机器上实现传输(光纤,专线,各种物理介质实现)传输层非常核心的内容:Socket技术什么是Sccket技术:任何的编程语言都是支持socket(网络编程)技术开发,原创 2021-11-12 15:03:53 · 1515 阅读 · 0 评论 -
局部变量和成员变量的区别
局部变量,定义在方法中的变量:成员变量,定义在类中的变量:public class Test2 { private String a = "成员变量(类变量)"; public void A() { String a = "成员变量(局部变量)"; System.out.println(a); System.out.println(a); } public static void main(String[] ar原创 2021-10-20 16:55:11 · 85 阅读 · 0 评论 -
代码分析题输出:
public class Test { String str = new String("hello"); char[] ch = {'a','b','c'}; public void function(String str,char ch[]){ str = "world"; ch[1] = 'd'; } public static void main(String[] args) { ..原创 2021-10-20 16:06:25 · 203 阅读 · 0 评论 -
java8之反射技术
反射的基本概念使用反射机制可以动态获取当前class的信息,比如方法的信息,注解信息,方法的参数,属性等。反射技术应用的场景(1)JDSBC加载驱动连接Class.forName(""); (2)Spring容器框架IOC实例化对象。(3)自定义注解生效(反射 +Aop) (4)第三方核心的框架反射技术的使用Class类代表类的实体,在运行的java应用程序中表示类和接口。Field类代表类的成员变量(成员变量也称为类的属性)Method类 代表类...原创 2021-08-08 15:07:58 · 262 阅读 · 0 评论 -
Stream流之并行流执行效率
我们来举个例子,从零加上100亿耗时多久: Instant startTime = Instant.now(); System.out.println(startTime); long sum = 0; for (long i = 0; i < 10000000000l; i++) { sum += i; } System.out.println(sum); Instant e原创 2021-07-21 06:27:00 · 732 阅读 · 0 评论 -
java新特性之Stream流
java8给为我们提供了一个叫Stream流的东西,那么什么是 Stream流了,它是java JDK1.8中处理集合的关键抽象概念,Lambda和Stream是JDK1.8中新增的函数式编程中最有靓点的特性了,它可以实现对集合的各种操作,可以执行非常复杂的查询,过滤映射数据等操作。使用StreamApi对集合数据进行操作,就类似于使用Sql执行的数据库查询。Stream Api可以极大提高java程序员的生产力,让程序员写出高效率,高逼格,非常nice的代码。我们说这个之前,想下生活中的场景:流水线原创 2021-07-20 23:17:23 · 274 阅读 · 10 评论 -
JAVA8之新特性
在jdk8以前,interface之中可以定义变量和方法,变量必须是public ,static,final的,方法必须是public abstract的,由于这些修饰符都是默认的。接口定义方法:抽象方法,需要子类实现:接口定义变量:public , static final/** * 接口 */public interface MyInterface { //这里定义变量不加修饰,系统会自动加上修饰 String CY_NAME ="成员变量"; ...原创 2021-07-17 21:11:24 · 822 阅读 · 16 评论 -
Stream流之查询包含某些属性的对象集合
我们有个需求,把包含某些属性的集合给过滤出来,我现在需要把人员编号为1,2,3,4,5的人员过滤出来。 List<Person> personList = new ArrayList<>(); personList.add(new Person(1,"宋圆圆",25,"技术总监")); personList.add(new Person(2,"李师师",23,"技术专家")); personList.add(new Per原创 2021-07-15 11:33:23 · 3920 阅读 · 0 评论 -
时间工具类
public class DATEUtils { /** * 获取当前前n小时的时间 * @param ihour * @return */ public static String getBeforeByHourTime(int ihour){ String returnstr = ""; Calendar calendar = Calendar.getInstance(); calendar.set.原创 2021-04-02 16:03:50 · 79 阅读 · 0 评论 -
byte b = (byte)129
有这么一个题,byte b = (byte)129;我先在控制台打印了一下,发现竟然等于“-127”,我也很惊讶,为啥等于-127我们来分析一下。我们想想,在java语言中,byte只占一个字节的,它的取值范围为负的128到正的127,当数字为127时,是byte的最大值,没有溢出,如果把128强制转换成byte,此时就会发生溢出现象,相当于最小的负数-128,那么,129被强制转换为byte后的值是-127,所以为-127....原创 2020-11-08 20:13:34 · 5331 阅读 · 0 评论 -
java判断用户是PC端登录还是APP端登录
public void getRequestHeader(HttpServletRequest request){ // 从浏览器获取请求头信息 String info= request.getHeader("user-agent"); if(info.contains("Windows")){ System.out.println("Windows pc端登陆"); return; } if(info.contains("Maci.原创 2020-11-06 10:07:53 · 1682 阅读 · 0 评论 -
前端传多个id,后台进行解析处理
我们现在有这么个需求,前端传多个id,后端进行解析,并一个个的取出来,我们可以把id放到json中,每个id用逗号分隔开来,如下所示。{"ids":"1,2,3,4,5"}后台定义一个字符串,然后用这个字符串接受前端传来的json,并把字符串里面的数据用逗号分隔的方式一个个解析出来。代码实现,如下图。 @RequestMapping("/addIds") public ResponseMessage addOrganizationInfo(@RequestBody Map&l原创 2020-10-23 15:59:22 · 4790 阅读 · 0 评论 -
Stream流根据条件过滤集合对象
有个需求,我要获取一个部门下所有的人员年龄在30岁并且是高级工程师和技术专家的人员信息。当然sql也可以处理这个需求,但是我现在用代码处理这个需求,java8Stream流式思想可以帮我们解决这个问题。我们先定义一个部门人员集合DeptUser@Datapublic class DeptUser { //用户id private int userId; //年龄 private int age; //性别 private String sex原创 2020-10-17 11:21:38 · 5949 阅读 · 3 评论 -
详解HashMap 与 Hashtable 的区别
历史原因: Hashtable继承Dictonary类, HashMap继承自abstractMap我们来看下源码:HashMap允许空的键值对, 但最多只有一个空对象,而HashTable不允许。 public static void main(String[] args) throws InterruptedException { HashMap hashMap = new HashMap(); hashMap.put(null,null...原创 2020-08-07 17:05:54 · 144 阅读 · 0 评论 -
List<Map<String,Object>>转List<T> list map对象转list对象
上代码:public class User { private String name; private int age; //构造方法 public User(){} //有参数构造方法 public User(String name,int age){ this.name = name; this.age = age; } public String getName() { retur原创 2020-07-21 17:51:01 · 19672 阅读 · 2 评论 -
java Stream流之根据条件过滤统计个数
统计list对象中为性别为女的个数 public static void main(String[] args) { List<User> list = new ArrayList<User>(); list.add(new User("李师师",23,"女")); list.add(new User("陈圆圆",26,"女")); list.add(new User("潘安",24,"男"));原创 2020-07-14 10:29:02 · 16519 阅读 · 0 评论 -
java截取字符串操作工具类
public class StringUtil { /** * * 获取“_”后几位字符春 * 例如:HELLO_WORLD->WORLD * @param str * @return */ public static String subLastString(String str) { StringBuilder result = new StringBuilder(); String su.原创 2020-06-29 16:43:44 · 787 阅读 · 0 评论 -
java枚举的使用
public enum TypeEnum { 男("man"), 女("woman"); private String typeName; TypeEnum(String typeName) { this.typeName = typeName; } public String getTypeName() { return this.typeName; } /** * 根据类型的名称,返回类型.原创 2020-06-29 16:38:43 · 100 阅读 · 0 评论 -
java基础问题
不知到大家出去做笔试题的时候,有没有遇到这样的一道笔试题,i + 1 < i 的数存在吗,我们来推理下吧假设变量 “i”为int类型,当“i”为表示的最大整数时,i+1就会溢出变成负数了,此时就满足i+1<1;代码演示一下 public static void main(String[] args) { int i= Integer.MAX_VALUE;//得...原创 2020-05-02 23:30:34 · 123 阅读 · 0 评论 -
a=a+b和a+=b有什么不同
我相信大家出去在做笔试题的时候,都会遇见这个问题,笔者曾经也遇到了这个问题,我要把它记录下来,对问题知其然,还要知其所以然。在java语言中,当参与运算的两个数是byte,short或int时,它们首先了会转成int类型,然会在进行计算,然后把计算的结果赋值给用来存储结果的变量,如果用来存储结果变量的类型是byte或short,这意味着需要把int类型转换为bute或short类型,a+b会隐...原创 2020-05-02 23:07:42 · 1041 阅读 · 0 评论 -
Object的方法
今天我们就来讲讲Object类的方法,Object类是类层次结构的根,说白了,就是所有类的父类,在java语言中,所有的类从根本上而言都继承自这个类,而且,Object类是java语言中唯一没有父类的类,而其他所有的类,包括标准容器类,列如数组,都继承了Object类。Object类的方法 方发名 返回类型 ...原创 2020-04-12 10:52:28 · 104 阅读 · 0 评论 -
Java程序初始化的顺序是怎样的
在 java语言中,当实列化对象时,对象所在类的所有成员变量首先要进行初始化,只有当所有类成员完成初始化后,才会调用对象所在类的构造函数创建对象。java程序的初始化一般遵循三个原则(优先级依次递减)(1)静态对象(变量)优先于非静态对象(变量)初始化,其中,静态对象(变量)只初始化一次,而非静态对象(变量)可能会初始化多次,(2)父类优先于子类进行初始化,(3)按照成员变量的定义...原创 2020-03-21 22:16:46 · 201 阅读 · 0 评论 -
char型变量中是否可以存储一个中文汉字
在java语言中,我们都知道默认使用的是Unicode编码格式,既每个字符占用两个字节,因此可以用来存储中文,我们看String源码可以看出,虽然String是由char所组成的,但是它采用了一种更加灵活的方式来存储,既英文占用一个字符,中文占用两个字符,采用这种存储方式的一个重要作用就是可以减少所需要的存储空间,提高存储效率,我们来上代码public class DemoTest {...原创 2020-03-21 08:54:19 · 524 阅读 · 0 评论 -
length属性与length()方法有什么区别
老师:length属性与length()方法有什么区别小明:当然有区别了,不就是多了个括号吗。老师:你是猴子请来的逗逼吗。。。。今天我们就来细说这两个的区别,在C/C++语言中,每当调用一个方法需要传递数组时,就必须同时传递数组的长度,因为在方法调用时传递的参数为数组的首地址,而对数组的实际长度却无法获知,这样会导致在对数组进行访问时可能产生越界,而在java语言中,数组提供了leng...原创 2020-03-20 23:41:17 · 584 阅读 · 0 评论 -
java中的数组是不是对象
在开发中,数组是我们最常用的数据结构,那么java中的数组是不是对象了,这是一个很值得思考的的问题,别急,我们来一步一步的分析,首先我们来分析对象的特点,说的直白点就是对象的特点是封装了一些数据,同时提供了一些属性和方法,那么我们再来看看数组,数组是指具有相同类型的数据的集合,它们一般具有固定的长度,并且在内存中占据连续的空间。另外我们需要知道一点,在C/C++语言中,数组名只是一个指...原创 2020-03-20 23:10:42 · 420 阅读 · 0 评论 -
分析:“==”,equals和hashCode有什么区别
“==”,equals和hashCode有什么区别,前两者都是在开发场景中用到的东西,后者在面试的时候问的比较多,前后两者都是香铺相成的。来,我们来分析下,“==”运算符用来比较两个变量的值是否相等,也就是说,该运算符用于比较变量对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能使用“==”运算符。如果两个变量是基本数据类型,可以直接使用“==”运算符来...原创 2020-03-20 22:31:52 · 200 阅读 · 0 评论 -
构造函数详解
今天我们就来讲讲构造函数,什么是构造函数,构造函数是一种特殊的函数,用来在对象实列化时初始化对象的成员变量,在java语言中,构造函数具有以下几个特点。构造函数必须与类的名字相同,并且不能有返回值(返回值也不能为void)每个类可以有多个构造函数,当开发人员没有提供构造函数时,编译器在把源代码编译成字节码的过程中会提供一个没有参数默认的构造函数,但该构造函数不会执行任何代码,如果开发人员提...原创 2020-03-20 11:45:09 · 720 阅读 · 0 评论 -
如何实现main()方法执行前输出“Hello World”
对于这个问题,面试官最喜欢问: 面试官:给我说下如何实现main()方法执行前输出“Hello World” 小明:摸了摸脑袋,看了看面试官,摆了下脑袋,很愁的答了句,这还真不知道。 面试官:mai()方法执行之前可以输出别的程序吗? 小明:沉默了下,想了想,main()方法是程序的入口方法,在程序运行时,最先加载的就是main()方法,那肯定不会执行别的程序 ...原创 2020-03-19 21:22:54 · 598 阅读 · 0 评论 -
java为什么需要public static void main(String[] args)这个方法
今天在想一个问题,和java打交道这么多年了,可是还是对java了解的太少,感觉java涉及的知识面太广了,关键是还一直在更新,更新速度也是非常快,这也间接证明了java是一个活跃的语言。好了,废话说多了不好,今天我们就来讲讲java中的一个方法,和java打交道的老哥也许知道,我们最常用的方法就是main()方法了,那么我们今天就来详细说说这个方法,public static void ma...原创 2020-03-16 20:06:54 · 356 阅读 · 0 评论 -
并行与并发的区别
并发:并发是指一个处理器同时处理多个任务。并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。并发是逻辑上的同时发生(simultancous),而并行是物理上的同时发生。我们来个比喻吧:并发是一个人同时吃三个馒头,而并行是三个人同时吃三个馒头。...原创 2020-02-10 23:35:05 · 327 阅读 · 0 评论 -
什么是可变参数
何为可变参数可变参数是允许调用参数数量不同的方法。我们来举一个例子public class DemoTest { public static void main(String[] args) { int i = sum(1,2,3); System.out.println(i); }//此方法可以调用1个int参数,或两个int...原创 2020-02-09 11:18:23 · 2285 阅读 · 0 评论 -
IO流
今天我就给大家讲讲IO流说到这个东西,确实有点抽象,因为它既看不见,也摸不着,那么,如果我举一些生活中的例子,你就可能会明白他到底是个什么东西,咱们作为搞程序的,你肯定经历过这样的场景,当你编辑一个文本文件,忘记了ctrl+s,,可能文件就白白编辑了,当你电脑上插入一个U盘时,可以把一个视频,拷贝到你的电脑硬盘里。那么数据都是在哪些设备上的呢?我们把这种数据的传输,可以看做是一种数据的流动...原创 2020-02-01 20:35:52 · 140 阅读 · 0 评论 -
java中endsWith()方法
今天给大家讲一个APIpublic boolean endsWith(String suffix) suffix-- 代表指定的后缀。 这个方法用于测试字符串是否以指定的后缀结束如果参数表示的字符序列是此对象表示的字符序列的后缀,则返回 true;否则返回 false。我们来举个列子public class TestDemo { /* 判断字...原创 2020-02-01 16:18:20 · 2818 阅读 · 0 评论 -
java中的递归
今天我们就来说说递归 白话讲:就是自己调用自己递归:指在当前方法内调用自己的这种现象递归的分类 递归分为两类,直接递归和间接递归 直接递归称为方法自身调用自己 间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法 递归的注意事项 递归一定要有条件限定,保证递归能够停止下来,否则会发生内存溢出 在递归中...原创 2020-01-30 14:11:16 · 181 阅读 · 0 评论 -
目录的遍历
今天就来讲讲目录的遍历:如上图:我想把E盘下的8888文件夹下的文件以及文件夹全部遍历出来有两种方法: public String[] list():返回一个String数组,表示该File目录中的所有子文件或目录 public File[] listFiles():返回一个File数组,表示该File目录中的所有的子文件或目录我们来用代码演示一下:pu...原创 2020-01-30 13:06:04 · 401 阅读 · 0 评论 -
绝对路径和相对路径
今天我就来讲讲绝对路径和相对路径绝对路径:从盘符开始的路径,这是一个完整的路径相对路径:相对于项目目录的路径,这是一个便捷的路径。下面我们来用代码演示一下:public class Demo03 { public static void main(String[] args) { //E盘下的aaaa.java文件 File f = ...原创 2020-01-30 10:30:13 · 251 阅读 · 0 评论 -
JDK8新特性之常用函数接口
今天我就来讲讲JDK8特性之函数式接口,如有不当之处,请指正。(1)函数式接口的概念:函数式接口是在jdk1.8提出来的一个概念,在java中指的是:有且仅有一个抽象方法的接口,这个接口就叫做函数式接口。当然也可以包含其他方法,比如默认的,静态的,私有的,这些是可以的。千万要注意的是:抽象方法只有一个。函数式接口适用场景:他适用于函数式编程场景的接口,在java中,函数式编程体现就...原创 2020-01-22 13:39:04 · 277 阅读 · 0 评论 -
java最简单的环境变量配置
(1)电脑系统window10 JDK java1.8版本(当然适用于各种版本,本章以1.8版本为例) JDK 安装目录如下所示:安装在E盘java目录下 安装好JDK之后进行环境变量的配置 鼠标右击我的电脑选择属性进入到控制面板主页,选择高级系统设置选择环境变量打开在系统变量里点击新建编辑系统变量Path...原创 2019-10-14 22:43:01 · 251 阅读 · 0 评论