关于#java#的问题:前台两次密码输入不一致,数据库中也新增了数据

前台两次密码输入不一致,为什么也会提交,数据库中也新增了数据,表示注册成功呢?

img

img

checkpass里要修改button的可用性,你这只弹了个提示,还是不影响继续提交啊

在校验不通过的时候要return ,不然还会往下执行

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7808247
  • 这篇博客你也可以参考下:Java程序创建一个父类,在父类中创建两个方法,在子类中覆盖第二个方法,再创建一个对象,将向上转型到基类并调用这个方法。
  • 你还可以看下java参考手册中的 java-学习Java语言 - 描述Java编程语言的基本概念和特点的课程。-注释是元数据的一种形式,为编译器提供信息。本课介绍了在程序中有效使用注释的地方和方法。-重复注解
  • 除此之外, 这篇博客: 2019年Java面试题基础系列228道(1),快看看哪些你还不会?中的 18、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 是值传递。Java 语言的方法调用只支持参数的值传递。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的属性可以在被调用过程中被改变,但对对象引用的改变是不会影响到调用者的。C++和 C#中可以通过传引用或传输出参数来改变传入的参数的值。在 C#中可以编写如下所示的代码,但是在 Java 中却做不到。

    using System;
    namespace CS01 {
    	class Program {
    		public static void swap(ref int x, ref int y) {
    			int temp = x;
    			x = y;
    			y = temp;
    		}
    		public static void Main (string[] args) {
    			int a = 5, b = 10;
    			swap (ref a, ref b);
    			// a = 10, b = 5;
    			第 225 页 共 485 页
    			Console.WriteLine ("a = {0}, b = {1}", a, b);
    		}
    	}
    }

    说明:Java 中没有传引用实在是非常的不方便,这一点在 Java 8 中仍然没有得到改进,正是如此在 Java 编写的代码中才会出现大量的 Wrapper 类(将需要通过方法调用修改的引用置于一个 Wrapper 类中,再将 Wrapper 对象传入方法),这样的做法只会让代码变得臃肿,尤其是让从 C 和 C++转型为 Java 程序员的开发者无法容忍。

    Java 平台提供了两种类型的字符串:String 和 StringBuffer/StringBuilder,它们可以储存和操作字符串。其中 String 是只读字符串,也就意味着 String 引用的字符串内容是不能被改变的。而 StringBuffer/StringBuilder 类表示的字符串对象可以直接进行修改。StringBuilder 是 Java 5 中引入的,它和 StringBuffer 的方法完全相同,区别在于它是在单线程环境下使用的,因为它的所有方面都没有被synchronized 修饰,因此它的效率也比 StringBuffer 要高。

    面试题 1 - 什么情况下用+运算符进行字符串连接比调用

    StringBuffer/StringBuilder 对象的 append 方法连接字符串性能更好?

    面试题 2 - 请说出下面程序的输出。

    class StringEqualTest {
    	public static void main(String[] args) {
    		String s1 = "Programming";
    		String s2 = new String("Programming");
    		String s3 = "Program";
    		String s4 = "ming";
    		String s5 = "Program" + "ming";
    		String s6 = s3 + s4;
    		System.out.println(s1 == s2);
    		System.out.println(s1 == s5);
    		System.out.println(s1 == s6);
    		System.out.println(s1 == s6.intern());
    		System.out.println(s2 == s2.intern());
    	}
    }

    补充:解答上面的面试题需要清除两点:

    (1)String 对象的 intern 方法会得到字符串对象在常量池中对应的版本的引用(如果常量池中有一个字符串与 String 对象的 equals 结果是 true),如果常量池中没有对应的字符串,则该字符串将被添加到常量池中,然后返回常量池中字符串的引用;

    (2)字符串的+操作其本质是创建了 StringBuilder 对象进行 append 操作,然后将拼接后的 StringBuilder 对象用toString 方法处理成 String 对象,这一点可以用 javap -c StringEqualTest.class命令获得 class 文件对应的 JVM 字节码指令就可以看出来。

  • 您还可以看一下 朱祚华老师的微信支付2021系列之付款码支付一学就会java版课程中的 微信付款码支付课程简介小节, 巩固相关知识点