1.按值传递 和 引用传递

(基本类型包括基本类型的包装类 或者 字符串类型 传递的是 副本 并不会改变原来的值)||  如果是引用类型 传递的是地址,会改变原来的值。

public class T {
public static void main(String[] args) {
String str = "logo";
change(str);//传递
System.out.println(str);//结果:logo
Integer i = new Integer(10);
changeInteger(i);//传递
System.out.println(i);//结果:10
}
private static void change(String str){
str = "change";
}
private static void changeInteger(Integer i){
i=100;
}
}

 

	public static void main(String[] args){
String str = new String("str");
char [] c = {'1','2','3'};
char c1 = '0';
change(str,c,c1);
System.out.println(str);//str 没变
System.out.println(c);//{'1','c','3'} 数组 改变
System.out.println(c1);//'0' 没变
} public static void change(String str,char[]c,char c1){
str = "change";
c[1]='c';
c1 = 'P';
}

  

 

2.子类继承父类。  方法的重写。 方法和返回值类型必须相同

class A {
protected int method1(int a, int b) throws Exception { return 0; }
} class B extends A{// 重写 1.子类的 访问修饰符大于服类 2.抛出的异常小于父类
public int method1(int a, int b)throws RemoteException { return 0; }
}

3.类 中有 静态块  块  构造方法 时   初始化的顺序如下: 

  不管是  T t = new T1(); 还是 T1 t = new T1();

  都是先调用  父类的静态块,然后 子类的静态块,然后 才是  父类的 块 和构造方法,最后子类 的块 和构造方法

结果如下:

t static {}
t1 static{}
T {}
T()
t1 {}
t1()

import java.lang.reflect.Array;
import java.util.Scanner; public class T {
static{
System.out.println("t static {}");
}
{
System.out.println("T {}");
} T(){
System.out.println("T()");
}
public static void main(String[] args) {
T1 t = new T1();
} } class T1 extends T{
static{
System.out.println("t1 static{}");
} {
System.out.println("t1 {}");
} T1(){
System.out.println(" t1()");
}
}

  

4.基本类型的包装类 的 == 比较

		Integer a = new Integer(100);// new出来的已分配内存对象
Integer b = new Integer(100);
Double c = new Double(10.1);
Double d = new Double(10.1);
System.out.println(a==b);//false
System.out.println(c==d);//false Integer e = 20; //自动装配
Integer f = 20;
System.out.println(e==f);//true;

5.Object 的 equals 和普通的 equals的区别

如下:

public class Test extends Object{
public static void main(String[] args) {
Test o = new Test();
Test o1 = new Test();
if(o.equals(o1)){
System.out.println("aaa");
}//输出:hello
// aaa //-------------------
Object o2 = new Test();
Object o3 = new Test();
if(o2.equals(o3)){//false 会调用Object的 equals方法
System.out.println("bbb");
}
} public boolean equals(Test other){//此方法的 方法参数类型不一样 没有重写Object的equals方法
System.out.println("hello");
return true;
} public boolean equals(Object obj) {//此为Object的 equals方法重写
return (this == obj);
}
}

6.Thread 的start()和run()的区别一个线程对象只能调用一次start方法.从new到等待运行是单行道,所以如果你对一个已经启动的线程对象再调用一次start方法的话,会产生:IllegalThreadStateException异常.

可以被重复调用的是run()方法。
Thread类中run()和start()方法的区别如下:
run()方法:在本线程内调用该Runnable对象的run()方法,可以重复多次调用;
start()方法:启动一个线程,调用该Runnable对象的run()方法,不能多次启动一个线程; 7.Http 和 Https 的区别
在URL前加https://前缀表明是用SSL加密的。 你的电脑与服务器之间收发的信息传输将更加安全。

Web服务器启用SSL需要获得一个服务器证书并将该证书与要使用SSL的服务器绑定。
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。http的连接很简单,是无状态的,... HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议
要比http协议安全

8.Mybatis 中 ${参数} 和 #{参数}的区别

默认情况下,使用#{}语法,MyBatis会产生PreparedStatement语句中,并且安全的设置PreparedStatement参数,这个过程中MyBatis会进行必要的安全检查和转义。
示例1:
执行SQL:Select * from emp where name = #{employeeName}
参数:employeeName=>Smith
解析后执行的SQL:Select * from emp where name = ?
执行SQL:Select * from emp where name = ${employeeName}
参数:employeeName传入值为:Smith
解析后执行的SQL:Select * from emp where name =Smith

综上所述、${}方式会引发SQL注入的问题、同时也会影响SQL语句的预编译,所以从安全性和性能的角度出发,能使用#{}的情况下就不要使用${}

9.字符串操作 比较 ==

		String s = "abc";
String s1 = s+"";
System.out.println(s==s1);//false
String s2 = "abc";
System.out.println(s==s2);//true;
String s3 = "ab"+"c";
System.out.println(s==s3);//true;
String s4 = '1'+'2'+'3'+"abc";
System.out.println((int)'1');//49
System.out.println((int)'2');//50
System.out.println((int)'3');//51
System.out.println(s4);//150abc 

10. null的强转换后 调用static 和非 static方法

public class Test{
public static void main(String[] args){
((Test)null).tess();// test 类加载后 可直接调用static方法
((t5)null).te();// tttt 类加载后 可直接调用static方法
((t5)null).te1();// NullPointerException 非静态方法报错
}
public static void tess(){
System.out.println("tess");
}
}
class t5{
t5(){
System.out.println("t");
}
public static void te(){
System.out.println("tttt");
}
public void te1(){
System.out.println("t111");
} }

  

11.基本数据类型  和 它的包装类型 == 和 equals 比较都是true

	public static void main(String[] args){
Integer b = new Integer(5);
int a = 5;
System.out.println(a==b);//true
System.out.println(b.equals(a));//true
}

12.继承关系中,成员变量 是 调用方法获得的值,的执行顺序:

public class Su {

    String str = get("1 string");//
static String ss = get("1 static string");// static String get(String string) {
System.out.println(string);
return string;
} public static void main(String[] args) {
new s();
}
} class s extends Su{
String s = get("2 string");//
static String s2 = get("2 static string");//
}

 

java -- 容易放错的误区的更多相关文章

  1. Oracle EBS Java Applet报错:找不到类

    Oracle EBS Home Page可以打开,但是无法打开EBS的Form,查看Java控制台,有错误报出. java控制台报错,如下: Java Plug-in 1.6.0_07 使用 JRE ...

  2. Android Studio 首次安装报错 Java.lang.RuntimeException:java.lang.NullPointerException...错

    下次安装报:Java.lang.RuntimeException: java.lang.NullPointerException......错 只需在文件..\Android Studio\bin\i ...

  3. 使用 Gradle 编译 Java 项目时报错: Could not find Tools.jar

    在使用Android studio进行编译成jar的时候,遇到Gradle 编译错误,听前辈们说是jdk的版本不对,于是乎就更新了一下jdk, 然而可能是我重新安装jdk的时候改变了安装路径, 在pr ...

  4. java常见报错及解决

    Java常见报错信息: Java 常见异常种类 Java Exception: 1.Error  2.Runtime Exception 运行时异常 3.Exception  4.throw 用户自定 ...

  5. android studio java工程 报错

    作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com E-mail: 313134555 @qq.com  android studio java工程 ...

  6. Centos7 JDK安装过程中 解决java -version 报错: bash: /home/jdk1.8.0_161/bin/java: Permission denied

    1.执行Linux命令 -----vim /etc/profile  编辑profile  文件,在里面添加: #set java enviroment JAVA_HOME=/opt/JavaHome ...

  7. debug运行java程序报错

    debug运行java程序报错 ERROR: transport error 202: connect failed: Connection timed out ERROR: JDWP Transpo ...

  8. Java字符串易错方法总结

    Java字符串易错方法总结 public String[] split(String regex) 和 public String[] split(String regex,int limit) li ...

  9. java @override 报错处理

    转载自:http://blog.sina.com.cn/s/blog_9c7605530101kl9r.html 一.java @override 报错处理 做项目的时候,同事那边电脑上编译通过的ja ...

随机推荐

  1. 9套Android实战经典项目资料分享给大家

    通过项目学习收获更大. 1.基于Android平台实战爱短信项目 下载地址:http://pan.baidu.com/s/1hr8CEry 2.Android平台实战CRM客户关系管理(AChartE ...

  2. 在Ubuntu和Linux Mint上安装Oracle JDK

    在Ubuntu和Linux Mint上安装Oracle JDK 使用下面的命令安装,只需一些时间,它就会下载许多的文件,所及你要确保你的网络环境良好: sudo add-apt-repository ...

  3. Entity Framework之IQueryable和list本地集合

    我们来说一下Iqueryable集合和List等本地集合的区别,下面我们通过建立一个简单的例子来学习这个知识点,直接进入主题吧 1.首先对比一下两段代码?看一下有什么结果: (1) 第一段代码如图所示 ...

  4. 前端开发---ppt展示页面评论区展示

    1. 工程地址:https://github.com/digitalClass/web_page 网站发布地址: http://115.28.30.25:8029/ 2. 由于后端同学希望按照 sta ...

  5. css之浮动

    标准文档流 将窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素,即为文档流.每个非浮动块级元素都独占一行, 浮动元素则按规定浮在行的一端. 若当前行容不下, 则另起新行再浮动. 标准流的微 ...

  6. 使用ganglia监控hadoop及hbase集群

    一.Ganglia简介 Ganglia 是 UC Berkeley 发起的一个开源监视项目,设计用于测量数以千计的节点.每台计算机都运行一个收集和发送度量数据(如处理器速度.内存使用量等)的名为 gm ...

  7. Linux设备树语法详解

    概念 Linux内核从3.x开始引入设备树的概念,用于实现驱动代码与设备信息相分离.在设备树出现以前,所有关于设备的具体信息都要写在驱动里,一旦外围设备变化,驱动代码就要重写.引入了设备树之后,驱动代 ...

  8. Web site collections

    Integration 伯乐在线 极客头条 Hacker News Stack Overflow RFC Search Security Python Hacker - Freebuf PrimalS ...

  9. Everything(文件搜索神器)

    前言 Everything官网: http://www.voidtools.com/ 软件版本: V1.3.4.686 (x64) 操作系统: windows 7/10 搜索FTP(内网)资源 比如内 ...

  10. PHP基础语法

             PHP:超级文本预处理器一,PHP的四对标记 <?php ?> <script language="php"> <script> ...