Java
/
山上一缕烟
这个作者很懒,什么都没留下…
展开
-
【Java / Kotlin】Warning:Leaking ‘this‘ in constructor of non-final class
在构造函数(注意:init 块和给成员变量(属性)赋初值的语句,都是构造函数的一部分)中使用 this 时,可能会出现这个警告。如果不理会,可能导致访问到未初始化的成员变量。Java 中,它们可以是未赋初值或赋值为 null 的引用类型;Kotlin 中,可以是 lateinit var 或未赋值或赋值为 null 的可空类型。事实上,在构造函数中使用 this,即便这个类是 final 的(Kotlin 中则为没有 open 修饰的类),也有可能导致这样的后果。这主要发生在将 this 作为参数(实参)原创 2021-12-14 21:23:04 · 3494 阅读 · 0 评论 -
【2021-12-10】【Android】【血妈坑】百度地图 无法显示完整地图 可能是指定了错误的坐标(经纬度写反了)
LatLng(v: Double, v1: Double)的第一个参数是纬度(Latitude),第二个参数是经度(Longitude)。如果采用百度地图的坐标拾取系统取得指定地点的坐标,给出来的经纬度是反的,如果直接复制到 LatLng 的构造函数里,会出问题。...原创 2021-12-10 14:44:06 · 1233 阅读 · 0 评论 -
【2021-11-21】【Kotlin】表达式同时包含算术与移位运算(shl / shr / ushr)时,注意运算符的优先级。
如when (((if (v[1] != null) 1 else 0) shl 1) + (if (v[0] != null) 1 else 0)) { //...}不难看出,语句((if (v[1] != null) 1 else 0) shl 1) + (if (v[0] != null) 1 else 0)产生一个 2 位的二进制数,从右数第 0 位和第 1 位的值分别由变量 d[0] 或 d[1] 是否为空来决定。根据这个值跳转到不同的分支。这样的技巧在编程中并不少见。然而,如果原创 2021-11-21 22:04:47 · 1842 阅读 · 0 评论 -
【2021-11-21】【Java / Kotlin】Iterable<E>.iterator().next() 总是停在首个元素的原因与解决办法
调用 Iterable 及其子类的 iterator() 方法时,返回的是一个新的迭代器。所以,如果错用Iterable<E>.iterator().next()进行单向遍历,则迭代器无法移动,这是因为:实际上,每次调用此方法,都获取了一个新的迭代器。这个新迭代器总是指向 Iterable 的第一个元素。解决办法是:使用一个变量引用获得迭代器,并调用其 next() 方法。...原创 2021-11-21 21:53:25 · 2066 阅读 · 0 评论 -
【2021-11-20】Random, ThreadLocalRandom, SecureRandom 生成随机序列时 OutOfMemoryError: Java heap space 的一种情况
最近在做期末作业,给一个类写测试,跑的时候总是提示java.lang.OutOfMemoryError: Java heap space把测试数据的规模缩小到只有原来的几十分之一以后,问题依旧。按照 Stack Trace 定位出错的语句,发现有时是在一个简单的插入条目到某个数据结构的语句那里爆堆,有时则是在生成随机数的时候就爆堆。后来惊奇地发现:产生 IntStream / LongStream 的时候,忘记填入随机数的个数,也就是ints(long streamSize, int random原创 2021-11-20 14:37:38 · 450 阅读 · 0 评论 -
【2021-11-20】Android Gradle Build Failed: Unsupported class file major version 61 的解决办法
猜测是因为给 Gradle 指定了一个较高版本的 JDK(如,最近刚刚正式发布的 Java 17 LTS),导致无法支持某些项目的构建。依次选择File → Settings → Build, Execution, Deployment → Build Tools → Gradle将 Gradle JDK 改为Embedded JDK version 11.0.10然后确定,再重新构建项目。...原创 2021-11-19 11:44:28 · 15920 阅读 · 0 评论 -
【2021-11-19】Android Gradle Build Failed 你的主机中的软件中止了一个已建立的连接 / 远程主机强迫关闭了一个现有的连接 且无法更改 Gradle 版本 的解决方法
如果软件使用的 Gradle 及其插件的版本较旧(如,Android Gradle Plugin 3.5.0 + Gradle 6.8),则存在此 bug。关闭 Wi-Fi 热点及其它网络共享,再将项目 Build 一次。升级到较新的 Gradle(如,Android Gradle Plugin 7.0.3 + Gradle 7.3)可以解决本问题。但是,由于 Android Studio 的 bug 比较多,可能在第一次成功构建项目之前,都不能在 Project Structures 中更改 Grad原创 2021-11-19 11:34:28 · 2032 阅读 · 0 评论 -
【2021-11-14】Android Studio 总是报错 Unresolved Class ‘MainActivity‘ 的解决办法
在 MainActivity 类对应的源文件 MainActivity.java 或 MainActivity.kt 开头,不要漏掉 package 语句。例如:package com.example.myfirstapplication如果是将别处的代码整段复制粘贴,替换了 MainActivity.java 或 MainActivity.kt 的全部原有内容,易出现此情形。...原创 2021-11-14 10:44:04 · 15257 阅读 · 2 评论 -
【2021-11-16】Struts 2 + Tomcat,总是报错 一个或多个加载器启动失败 java.lang.NoClassDefFoundError: javax/servlet/Filter
Tomcat 从 10.x 版本开始,使用最新 Servlet API 5.0(2020-09-07 发布)版本,后者是 Jakarta EE 9 的一部分。引用的原javax.*包,全部重命名为jakarta.*降级到 Tomcat 9.x(9.x 的最高版本为 9.0.54)即可正确通过编译。...原创 2021-11-10 21:32:21 · 1251 阅读 · 2 评论 -
【Java】【VSCode】要求输入package语句的解决办法
Visual Studio Code 根据打开的文件夹来选定包名。如果 .java 文件处于打开的文件夹的根目录下,就不会被要求输入包名。在打开的文件夹的子文件夹中的 .java 文件会全部被要求在文件头处输入 package 语句。...原创 2020-06-17 12:26:15 · 2840 阅读 · 1 评论 -
【Java】通过 JDBC 连接 MySQL 数据库并使用预处理语句对数据库内容查询和更新
作业要求(1)先用MySQL建立一个数据库Users,然后在数据库里建立一个表。表中每条记录,存储了用户名、密码、上次登录时间。请你在表中输入3条记录。请截图。(2)编写一个带窗体的程序,用户输入用户名和密码,程序与数据库中的信息比对,用消息对话框输出结果:若正确,输出上次登录时间;若错误,提示用户重新输入。步骤与源码1、先在MySQL中按作业要求(1)创建实验数据。create database Users;use Users;create table LoginTable (Login v原创 2020-06-05 09:41:25 · 1067 阅读 · 0 评论 -
【Java】【VSCode】添加需要 import 的 Jar 包
在左侧的 Explorer 中,找到 Java Dependencies:点击 + 号,找到需要导入的 Jar 包,添加即可。原创 2020-06-04 15:41:55 · 9866 阅读 · 11 评论 -
【Java】编程练习:文件的读写
作业要求程序功能:批处理JAVA源文件。(1) 当有多个包组成一个应用时,编译主类,将自动编译其它相关的类,生成的字节码文件与其源文件在同一目录下。自己编写主类Main在无名包中,类A在包Adam中,类C在包Adam.Carol中,类B在包Betty中。然后编译,让各文件夹中既有源文件,也有字节码文件。(2) 运行你的程序,通过JFileChoose选择无名包所在的文件夹(假设为E:\tmp),把所有的源程序都拷贝出来,放到原文件夹的archive下面,仍然保留原来的子目录原创 2020-05-31 18:09:23 · 502 阅读 · 0 评论 -
【Java】在命令行下编译需要引用自定义包的程序,提示“错误:程序包*不存在”的解决方法
先将主程序的 .java 文件引用的全部类用 javac 编译成 .class 文件,然后用 cd 命令进入主程序的 .java 文件所在目录,编译主程序。原创 2020-05-29 15:31:47 · 1365 阅读 · 0 评论 -
【Java】编程练习:简易计算器(BigDecimal 及其常用操作)
作业要求编写Java GUI程序,实现一个简单计算器。要求如下:(1)设计的界面如下图所示:窗体的标题栏显示“模拟计算器—江海大”,1个文本框用于显示输入字符和计算结果;20个按钮控件作为字符输入按键或者功能按键。(2)计算功能:实现加、减、乘、除等双目运算,开平方、百分数等单目运算;(3)辅助功能:按钮“C”清空文本框;按钮“←”退格,删除文本框中最右边的一个字符。代码为了锻炼大家阅读代码的能力,本篇博文不包含代码的详细注释,只说明几点:1、Java 不像 C / C++ 那样具有手动释放原创 2020-05-28 22:40:35 · 2621 阅读 · 2 评论 -
【Java】编程练习:一个极其容易被破解的登录验证(滑动滑块进行拼图)
import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.lang.Math;class Global { public static String iconPath = System.getProperty("user.dir") + "\\demo.png", blockPath = System.getProperty("user.dir") + "\\slider.png"; publ原创 2020-05-21 19:48:20 · 881 阅读 · 0 评论 -
【Java】Swing 初步 · 常用 Swing 组件的简易演示
为了锻炼大家阅读代码的能力,本代码无注释。演示的组件有:JFrame, JPanel, JMenuBar, JMenu, JMenuItem, JComboBox, JRadioButton, ButtonGroupm, JCheckBox, JLabel, JTextField, JTextArea, JPasswordField。——————————————————————————————...原创 2020-05-07 17:14:44 · 253 阅读 · 0 评论 -
【Java】练习:画一个圆环(向圆环填充颜色)
为了锻炼大家阅读代码的能力,本代码无注释。import java.awt.*;import javax.swing.*;import java.util.Scanner;import java.util.Random;public class Main { public static void main(String[] args) { JFrame frame = new JFr...原创 2020-05-01 10:24:47 · 2283 阅读 · 1 评论 -
【Java】public、protected、private 成员及友好成员
————————————————————————————————————————————另一个文件:原创 2020-04-09 16:19:22 · 501 阅读 · 0 评论 -
【Java】将输入的 24 小时制时间转换为 12 小时制时间
一、题目描述题目内容:编写一个程序,要求用户输入24小时制的时间,然后输出显示12小时制的时间。输入格式:在一行中输入带有中间的:符号(半角的冒号)的24小时制的时间,小时和分钟均采用2位数字格式,如14:18表示14点18分, 09:06表示9点零6分。输出格式:在一行中输出这个时间对应的12小时制的时间,数字部分格式与输入的相同,然后跟上空格,再跟上表示上午的字符串AM或表示下午的...原创 2020-03-19 12:25:47 · 6200 阅读 · 0 评论 -
【2020/3/12】Java 提示 java.lang.ClassNotFoundException(错误: 找不到或无法加载主类)的解决办法
1、在用 java.exe 运行指定的 .java 字节码文件之前,需要先用 javac.exe 将准备执行的 .java 文件进行编译。方法是:javac -*.java*.java 的 * 号代表文件名。编译成功后,再用 java.exe 执行。2、如果仍然提示:“错误: 找不到或无法加载主类”,则检查环境变量是否配置正确。在环境变量中添加 classpath 变量,值设定为如下三个目...原创 2020-03-12 15:20:11 · 10834 阅读 · 0 评论 -
【2020/3/12】Java 提示 Exception in thread "main" java.lang.UnsupportedClassVersionError 的解决办法
在环境变量 Path 中,把旧版本的 Java 所在目录下移或删除。原创 2020-03-12 12:14:02 · 1798 阅读 · 0 评论