1 $符
在java学习中我们首次接触到$符是在学习标识符的时候,然后是前端中jquery库中的$符,接着便是后端中的$符了。
1.1 $第一种用法
用于定义java标识符。
1.2 JQuery库中的$符
1.2.1 介绍
在jquery中,“$”是jQuery的简称,是jquery库提供的一个函数,是“选取”的意思($是jQuery的别称,也就是 $是jQuery的对象,所有在用到 $的地方都可以使用JQuery来代替);“$()”函数可以根据括号里的参数进行查找和选择html文档中的元素,括号内不仅可以是ID,也可以是各类选择器。
例1:
$("a") = JQuery(a) 用CSS选择器构造了一个jQuery对象,并且它选择了”所有的”<a/>标签
例2:
$.name(),$.get(),$.ajax() 代表jQuery这个对象的方法
例3:不同选择器下代码不一样,但是效果相同
//元素选择器
$(document).ready(function(){
$(“div1”).click(function(){
$(“a”).hide();
});
});
//id选择器
$(“#p”).hide();
//class选择器
$(“.p”).hide();
1.2.2 作用
1、作为jQuery包装器,利用选择器来选择DOM元素(这个也是最强大的功能)
如:$(“table tr:nth-child(even)”)
2、实用工具函数,作为几个通用的实用工具函数的命名空间的前缀
如:$.trim(someString)
3、文档就绪处理程序,相当于$(document).ready(…)
如:$(function(){…}); 里面的函数会在DOM树加载完之后执行
4、创建DOM元素
如:$("how are you"?)
5、扩展jQuery
如:$.fn.disable = function(){…}
6、使用jQuery和其他库
如:Prototype库也是使用符号,JQuery提供noConflict函数避免冲突, jQuery.noConflict(); 把符号还原到非jQuery库定义的含义。
1.3 后端中的$符
1. MyBatis处理 ${ } 占位符,使用的 JDBC 对象是 Statement 对象,而其值是字符串拼接的方式,容易造成sql注入,有安全风险,而且执行sql的效率也比#{}低;
2. ${ } 占位符中的数据是原模原样的,不会区分数据类型,所以${ } 占位符常用作表名或列名,前提需要保证数据安全时使用 ${ },而且$符是直接显示原本内容在sql语句中,不做任何修改。
2 #符
2.1 #符做注释
Java中的#号是一个特殊的符号,它可以用来表示注释。注释是一种源代码的辅助说明,它不会被编译器或解释器执行,而是用来提供给程序员的一些提示或说明。
在Java中,#号可以用来表示单行注释,也可以用来表示多行注释。单行注释是以#号开头,后面跟着注释内容,注释内容可以是任何文本,例如:#这是一行注释。多行注释是以/*开头,以*/结尾,中间可以包含任意多行文本,例如:/*这是一段多行注释*/。
注释的作用是可以让程序员更好地理解代码,也可以让程序员更好地记住代码的含义,从而更好地维护和编写代码。另外,注释也可以用来提供一些额外的信息,例如程序的版本号、作者信息等。
2.1 #做占位符
1. MyBatis处理 #{ } 占位符,使用的 JDBC 对象是PreparedStatement 对象,执行sql语句的效率更高,并且能够避免 sql 注入,使得sql语句的执行更加安全。
2. #{ } 常常作为列值使用,位于sql语句中等号的右侧;#{ } 位置的值与数据类型是相关的。
3. #{ } 在处理数据时会加上双引号,这是因为它会把传入的数据都当成是一个字符串,所以在传入数据时会给传入的数据加上一个双引号!
4. #{ } 用来做变量替换,相当于使用PreparedStatement来对#{XXX}进行赋值操作。
注:如果在#{}和${}能同时使用的情况下建议使用#{},此处做以下两点使用场景说明
(1)在sql语句中,如果要接收传递过来的变量的值的话,必须使用#。因为使用#是通过PreparedStement接口来操作,可以防止sql注入,并且在多次执行sql语句时可以提高效率。
(2)$只是简单的字符串拼接而已,所以要特别小心sql注入问题。对于sql语句中非变量部分,那就可以使用$,比如$方式一般用于传入数据库对象(如传入表名)。
以上就是对$和#的一点说明。