javaSE
文章平均质量分 72
明月几时有666
互相学习,共同进步!
展开
-
递归也没有那么难
本篇文章,主要介绍> - 递归的概念;> - 递归问题的分析方法(原问题、规模更小的问题、如何利用规模更下的问题构建原问题的解、最基本的问题,这些概念下文会介绍)> - 递归函数的书写 (函数的“宏观语义”)> - 递归函数的调试方法> - 经典的递归算法的解答:斐波那契数、汉诺塔等等。> - 其他递归问题(日后不断补充)原创 2022-06-01 13:23:16 · 3579 阅读 · 3 评论 -
Java Char类型介绍
一、表现形式char类型的字面量值,通常有三种形式,都是位于一对单引号 ''中。字符常量,'a'十六进制值,'\u03C0'代表数学字符π特殊字符的转义序列,'\n'代表换行其中,第一种和第三种是我们在程序中经常会使用到的形式。特殊字符的转义序列用于表示不能或者不方便输入的字符。第二种形式都是\u + 4位十六进制数,本质也属于转义序列,但是它能够表示所有字符。我们有时候提及的char值,其实是第二种形式表示的十六进制值,这也是char类型存储值的本质形式,就是说你程序中书写’a’,编译器最原创 2022-05-03 15:57:06 · 1198 阅读 · 0 评论 -
Java反射invoke报错wrong number of arguments
已解决:wrong number of arguments会介绍可变参数,问题发生的根本原因。原创 2022-04-20 16:21:13 · 13071 阅读 · 0 评论 -
Java中System.nanoTime的方法详解
返回的值表示从某个固定但任意的起始时间开始的纳秒数原创 2020-10-24 17:28:27 · 18214 阅读 · 1 评论 -
Java打印String对象的地址
一、System函数当使用System.out.println()方法打印String类型对象时,会输出String对象代表的字符串,并不会输出对象的地址。因此,我们必须借助其他API来实现该功能。java.lang.System类的方法public static native int identityHashCode(Object x);Returns the same hash code for the given object as would be returned by the defa原创 2022-04-15 20:03:39 · 14517 阅读 · 3 评论 -
Java char类型介绍
char类型表示一个Unicode字符吗?不,严格来说,现在char类型表示一个代码单元。有些Unicode字符需要一个代码单元表示,有些需要两个代码单元表示。原创 2022-04-14 07:53:15 · 14711 阅读 · 1 评论 -
Java currentTimeMillis()方法介绍
返回从1970年1月1日午夜(UTC)开始到当前时间的毫秒值.原创 2022-04-12 10:10:09 · 15321 阅读 · 0 评论 -
错误: 在类 com.example.app.TestMain 中找不到 main 方法
一、问题发生如下图所示,在IDEA中编译时,出现下图错误:代码如下,我明明写了main方法的。package com.example.app;import com.sun.org.apache.xpath.internal.operations.String;public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!");原创 2022-03-31 11:21:10 · 1455 阅读 · 0 评论 -
Java反射的setAccessible()方法(简单易懂版)
前言:在使用Field类的对象访问我自定义的Employee类对象的name域时,抛出异常illegalAccessException。查询原因为:在访问name域时,Java进行了访问检查,发现该域是private修饰的,不能直接访问,因此抛出异常。一、 什么是Java的访问检查访问检查,就是查看成员属性、成员方法的使用是否符合访问权限(public、protected、default、private)。有点太理论化了,简单来说,如果一个类的成员(属性或者方法)的访问权限是private,那么该.原创 2022-03-29 21:08:17 · 11900 阅读 · 1 评论 -
Java Char类型介绍
java char类型详解原创 2021-12-08 16:47:26 · 921 阅读 · 0 评论 -
Java两整数相除向上取整
前言:Java中两个整数相除,如果不能整除,默认是向下取整的。例如:11 除以 3 的结果是 3。然而,某些情况下(eg. 把11个糖果,每3个分一堆,不足三个也分成一堆,可以分几堆?),我们需要向上取整,这样的情况该如果处理呢?方式一: 添加三目运算符逻辑代码x / y + (x % y != 0 ? 1 : 0);这种方法逻辑上很简单,如果x可以整除y,就将x / y 的结果加0,不能整除y就将x / y 的结果加1。方式二:使用ceil函数 (int)Math.ceil((double.原创 2021-11-30 10:17:40 · 64205 阅读 · 12 评论 -
Java生成指定范围的随机数
一 Java提供的API在Java SE中,java.util.Random类中提供了产生随机数的API,如下图所示:返回从随机数生成器序列中提取的,均匀分布在0(包含)和指定值,即参数bound(不包含)之间的一个Int类型的伪随机数。简而言之,就是返回[0,bound)中的一个int值。二 返回指定范围的随机数Java中提供的API,没有可以直接提供一个具体范围的方法,因此,需要我们自己稍微转化一下代码逻辑。假设你想要在范围[l,r]中产生随机数(0 <= l < r),我原创 2021-11-18 11:13:33 · 2582 阅读 · 3 评论 -
Java运算符
运算符、操作数、表达式优先级、结合性分类依据优先级、操作数个数、功能分类 其他一、基本概念运算符:表示运算符的符号,又称操作符操作数:运算或者操作的对象表达式:常量、变量、或者能够计算出结果的一串常量、变量和运算符的组合。例如123、x、x+123,三者属于表达式二、优先级和结合性提及运算符,除了运算符本身的功能外(例如、+表示加法),最重要的应该是优先级和结合性了 ,因为它们决定了表达式中运算符进行运算时的先后顺序。如下表所示,列举了java中优先级从高到低的运算符优先级运算符原创 2021-10-02 14:08:14 · 121 阅读 · 0 评论 -
Java IO流read()方法为什么返回int而不是byte
1、read()的底层是由C++实现的,返回的是unsigned byte,取值范围为[0~255],在java中没有对应的类型,所以只能用int类型接收,由Java接收得到的就是int[0、255]。java的byte只能表示[0-127]的范围,所以需要更大的类型来表示,提升为int2、读取字节的时候,假如某个字节的八位是11111111,即-1,和表示流结束的标志相冲突,提升为int的时候,int为32位,前面不足补0,即为255,而输出流在写数据的时候则是强制转换为字节数据,只保留后面八位———原创 2021-07-20 14:49:21 · 791 阅读 · 0 评论 -
java 创建文件时的相对路径
在学习到java IO部分的相关知识时,我们会频繁的遇到路径(包括相对路径、决定路径),目录(或目录名),文件(或文件名)等等术语,它们是什么呢?本文接下来会有详细介绍。之后,再去关注我们再创建文件时,有时候直接指定文件名,那么改文件具体被放在哪里目录下了等相关问题。...原创 2021-07-19 08:07:48 · 1375 阅读 · 0 评论 -
Java实现Socket通信
前言:花了一个多星期的时间,重新学习了计算机网络中可靠数据传输的知识和TCP、UDP协议。在掌握了基本的理论后,想通过编程实践,来巩固和加深下对Socket通信的理解。一 项目简介1. 开发环境操作系统:win10Java版本:1.8开发工具:IDEA 20212. 项目描述本项目基于TCP协议,实现了客户端和服务器的Socket通信。项目主要实现了查字的功能,客户端输入要查询的一个汉字,然后回车发送到服务器端,服务器把汉字的查询结果在返回给客户端。另外,在使用服务器提供的字典服务前,客户原创 2021-06-04 18:21:02 · 10765 阅读 · 4 评论 -
Java的静态方法不能被重写(详解!)
答案很明确:java的静态方法不能被重写。 静态成员(方法或属性)是类的成员存放在栈中,类可以直接调用(是属于类的静态成员,当然对象也可以调用,只是说你可以使用而已);实例成员是对象的成员,存放在堆中,只能被对象调用。 重写的目的在于根据创造对象的所属类型不同而表现出多态。因为静态方法无需创建对象即可使用。没有对象,重写所需要的“对象所属类型” 这一要素不存在,因此无法被重写。千言万语,不如代原创 2017-06-07 00:18:15 · 24054 阅读 · 0 评论 -
Java不同进制的表示形式
一,数据类型和数的表示形式 我们知道没一个变量都有它的数据类型,类型确定,数据的范围和和操作集合也就确定。然后就是数的不同的进制的表示。我们已经习惯了十进制表示,例如:int x=15,其实也可以这么写int x=017(八进制),int x=0xf(十六进制,不区分大小写),int x=0b1111(二进制); 总结如下Java目前我知道的数的表现形式 二进制:0b****;(*表示0或1)原创 2017-05-15 21:39:35 · 3870 阅读 · 0 评论 -
对于i++和++i的深入理解
在学完jvm的一些知识后,发现有些令人云山雾罩的问题,逐渐变得条理清晰。首先,在这里保证,看完以下解释,让你彻底明白i++和++i的原理,而不是停留在先赋值后运算的浅层次的理解。因为涉及底层,有些东西可能晦涩难懂,但难能可贵。但柳岸花明又一村,相信你可以。加油。一、相关知识以下介绍的知识是理解的必备装备,在打“boss”前最后还是捡一些武器。虚拟机栈:java虚拟机运行时数据区的一部分,...原创 2018-09-29 22:17:34 · 713 阅读 · 4 评论 -
Java别说取余(%)运算简单,你真的会吗?
一,直击现场下面我来抛出几道题: 说明m是商,n是余数; (1)正数%正数 3%2=m…….n 2%3=m…….n (2)正数%负数或者负数%正数 -3%2=m…….n 3%-2=m…….n -2%3=m…….n 2%-3=m…….n (3)负数%负数 -3%-2=m…….n -2%-3=m…….n二,验证时刻下面的结果没有商m只有余数n;有没有全部答对呢?没有的话来看总结吧原创 2017-05-16 17:20:51 · 33898 阅读 · 11 评论 -
java: 意外的类型需要变量找到值
一 问题发生 发生了这个编译报错,真是令人意外。事情是这样的,在学习了运算符的结合性和优先级的相关知识后,我突发奇想,想要运算“++i++”或者“++ ++i”的值是多少。于是在IDEA中编写了以下代码:public class Main { public static void main(String[] args) { int i = 0; System.out.println(++i++); }}原创 2021-02-27 10:55:38 · 2075 阅读 · 0 评论 -
Java命令行运行错误: 找不到或无法加载主类
前言:虽然学习Java语言约有两年多,但在最近需要使用命令行工具编译并运行Java程序时,还是报错了。花费了一些时间,解决了该问题,发现解决方法在初学Java时使用过。一则,为了避免以后再出现同样的问题而浪费不必要的时间;二则,作为使用该语言的程序员,对于该语言的一些基本问题,应该有清晰的理解和认识;三则,网上的一些解决方案,不够完备。有的没有解释问题原因,直接给出答案;有的,未列举出某些常见情况的解决方案。因此,写此文章,让读者可以举一反三,深入理解问题。一、 问题分析找不到或无法加载主类,主要原因有原创 2021-01-17 18:15:46 · 414623 阅读 · 53 评论 -
基本数据类型和抽象数据类型的联系
一 基本数据类型的产生数据类型反映了数据的取值范围以及对这类数据可以施加的运算。二 抽象数据类型抽象数据类型是一个数据模型和定义在该模型上的运算集合。基本数据类型的每个取值相当于抽象数据类型的数据模型。基本数据类型的取值范围相当于抽象数据类型所有创建并初始化数据模型后的该类型对象的集合。基本数据类型的运算集合相当于抽象数据类型的运算集合。(对象调用方法改变该对象数据模型的状态,可以理解为单目运算符i ++)三 个人感悟(不重要) 最初原创 2021-01-07 12:29:48 · 1821 阅读 · 3 评论 -
Java中Comparable和Comparator接口的区别
背景:在学习数据结构二叉堆之后,想通过练习一些题目来加深对知识的理解。在问题解决过程中遇到了一个问题:我实现的堆是最大堆,堆顶元素是最大值(针对Integer类型来说),但是我希望堆顶元素是最小值。换句话说,对于Integer类型,java通过Comparable接口内置了比较规则,即符合算数逻辑运算的 “1小于2”。但是,我的需求是“1大于2”,这就需要我在外部通过Comparator定义新的比较规则,即数字小的比较大一、接口定义以下内容参考JAVA API官方文档。 泛型接口Comparabl原创 2020-11-24 18:18:47 · 434 阅读 · 0 评论 -
java中有多进程吗?
一、前言在我学习java语言的印象中,几乎没有听说过java有提到过进程方面的知识。学习到的都是多线程机制。于是我产生了疑惑,java中是不是没有线程?我脑海中有一个模糊概念,已经不记得从何时何地获得的了,即在利用java虚拟机java程序,java虚拟机的运行代表着进程,而运行的java程序代表着线程。二、仅供参考java实现的是一种多线程的机制,就java本身概念而言(虚拟机规范),线程...转载 2019-08-08 17:42:27 · 3637 阅读 · 0 评论 -
为什么内部类的静态域必须是final?
一、课本解释 我们希望一个静态域只有一个实例 ,不过对于每个外部对象,会分别有一个单独的内部类实例。如果这个域不是fianl, 它可能是不唯一的。二、我的理解 把一个类声明为内部类,通常是因为它和外围类是有一定联系的。现在我们把手机声明为外围类,手机屏幕声明为内部类public class MobilePhone { private St...原创 2018-05-19 09:26:21 · 3006 阅读 · 10 评论 -
java 反射相关知识
一 、Class 类1、Class类的由来&nbsp;&nbsp;&nbsp;&nbsp;Java语言是面向对象的编程语言。在java中万事万物皆是对象,除了基本数据类型,和静态的方法和属性(因为它们是属于类的)没有面向对象的痕迹。类是模板,它把对象的特征和行为抽象后进行封装。例如学生是对象,它有哪些特征(属性):姓名,年龄,班级。行为:学习等。因此就有了类 public clas...原创 2018-05-11 17:56:13 · 162 阅读 · 0 评论 -
Java 8 接口
内容来自java核心技术(第十版 卷一),和本人总结与思考。一、接口概念重点: 1、接口不是类,而是对类的一组需求描述。描述了类要具有什么功能。(其他理解:接口是一种规范) 2、不能有实例域,不能有静态方法(java 1.8 以前),可以定义常量。 3、所有方法自动属于public ,域(属性)自动属于public static final 【温馨提示】 Java语言规范建议不...原创 2018-05-10 18:36:48 · 301 阅读 · 0 评论 -
为什么在mysql数据库可以运行的SQL语句,在java里却报错!!
一,解决方法 为尽快解决问题, 其他代码省略,直接说明解决发String sql = "select * from tablename"; //引发java虚拟机报错却在数据库正确运行;为得到正确结果改为:String sql = "select * from tablename "; //可以正常运行两句一样吗,请仔细看哦? NO,可以正确运行的sql的tablename 和 ”原创 2017-12-04 22:00:39 · 9254 阅读 · 2 评论 -
java怎么得到字符对应的char值
一,如下代码System.out.println((int)'a'); System.out.println((int)'A'); System.out.println((int)'中'); System.out.println((int)'国');二,运行结果原创 2017-12-05 22:00:32 · 3790 阅读 · 1 评论 -
java插入mysql中的数据变成问号和修改my-default.ini不生效;
一,变成问号的原因是因为红箭头所指,只要将latinl修改成utf8就可以了; 二,修改步骤 (1)打开mysql的安装文件夹,如果是my-default.ini,一定要重命名为my.ini 直接重命名即可,无需其操作,这一步很重要,直接决定配置文件(.ini)能否修改成功; (2)然够打开这个文件,在末尾添加 character_set_server=utf8(前面没有#号)原创 2017-12-04 21:37:41 · 1158 阅读 · 0 评论 -
主流数据库加载驱动程序
一,SQLserver Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”); 二mysql Class.forName(“com.mysql.jdbc.Driver”); 三oracle Class.forName(“oracle.jdbc.driver.OracleDriver”);原创 2017-11-29 18:38:40 · 388 阅读 · 0 评论 -
轻松理解java访问修饰符!
一 包的作用把关系密切的类组织在一起。这让我想到了家庭。 以下的类名都是基于孩子起,有爸爸,妈妈,女儿和女儿的舅舅;package 家;public class 爸爸 { private double 私房钱; protected double 建设银行;//(家里开支所用) //构造函数和方法省略}class 妈妈{ private double 生活开支的钱;原创 2017-11-14 14:13:13 · 371 阅读 · 0 评论 -
java中有些特殊的类不需要或不能创建实例对象!
一, 不能创建对象的类抽象类(abstract)不能创建对象。这个大家应该都知道,所以在这里就不班门弄斧了。 简单回顾需要注意的几点:包含抽象方法的类,必须声明为抽象类。声明为抽象类的类,不一定非要包含抽象方法。抽象类包含具体数据和具体方法。抽象类不能创建对象,但可以定义对象变量,来引用非抽象子类的对象Persion p=new Student();//其中Persion是抽象类,p是对原创 2017-11-11 18:02:37 · 7280 阅读 · 1 评论 -
子类是否可以重载父类的方法?重载可以发生在子类中吗?
一、争议这是网上经常被提起的两个问题,有的说不可以,理由重载是同一类中,方法名相同,参数列表不同的一组方法的定义。 但是认为可以的理由是子类可以继承父类所有的公有方法(构造器方法除外),然后在子类中定义与继承方法同名不同参数列表的方法,这也叫重载。二、个人理解感觉第一个问题本身的问法就存在问题。没有这一说。 重载可以发生在子类中吗?我同意 “重载是同一类中,方法名相同,参数列表不...原创 2018-05-25 22:48:30 · 17320 阅读 · 9 评论 -
子类是否可以重载父类的方法?重载可以发生在子类中吗?
一、争议这是网上经常被提起的两个问题,有的说不可以,理由重载是同一类中,方法名相同,参数列表不同的一组方法的定义。 但是认为可以的理由是子类可以继承父类所有的公有方法(构造器方法除外),然后在子类中定义与继承方法同名不同参数列表的方法,这也叫重载。二、个人理解感觉第一个问题本身的问法就存在问题。没有这一说。 重载可以发生在子类中吗?我同意 “重载是同一类中,方法名相同,参数列表不...原创 2018-06-03 09:06:28 · 8138 阅读 · 0 评论 -
java环境变量配置
背景:windows 10操作系统一、配置如下打开配置:我的电脑(鼠标右击)–>属性–>高级系统设置–>环境变量,任选在“用户变量”或“系统变量”中进行配置JAVA_HOMEjava安装目录,如D:\jdkPath%JAVA_HOME%\bin%JAVA_HOME%\binCLASSPATH.;%JAVA_HOME%\lib\dt.jar;%JA...原创 2019-07-11 15:35:13 · 183 阅读 · 0 评论 -
JDBC之PreparedStatement的理解
前言:怀着疑惑和痛苦的心情写下这篇文章,其中疑惑之一是预编译对象,会把编译之后的整个语句保存在对象中,如果保存保存在哪里呢?注:本文以mysql数据库为基础展开一、基础知识1、SQL语句在数据库中的执行过程一条SQL语句从客户端(如: java 程序、navicat工具、cmd命令行)发送到数据库管理系统后,要经历以下过程:词法和语义的解析优化SQL语句,制定执行计划执行并返回结果...原创 2019-06-11 15:46:53 · 8270 阅读 · 0 评论 -
JDBC之CallableStatement
前言:在按部就班的学习JDBC的过程中,来到了这里来——CallableStetement。怀着不情愿的心情花了一下午学习了相关知识,不情愿是因为感觉像鸡肋,学了没什么用。也许是我能力有限,目光短浅吧。总之,既学之 ,则记之。以防忘记,又要遭受那不情愿之苦而重新学一次注:本文基于mysql数据库一、存储过程 存储过程是为了完成特定功能的SQL语句...原创 2019-06-14 18:06:29 · 3708 阅读 · 0 评论 -
java.net.SocketException: Software caused connection abort: socket write error
一、问题发生 使用QQ浏览器测试文件下载,下载文件时报错:ClientAbortException: java.net.SocketException: Software caused connection abort: socket write error二、问题解决关闭QQ浏览器,重新打开。三、其他程序运行正常,数据也没有出错,后台却老...转载 2019-05-23 15:27:28 · 2504 阅读 · 0 评论