Java一些面试题

sql注入

SQL注入(SQLi)是一种注入攻击,,可以执行恶意SQL语句。它通过将任意SQL代码插入数据库查询,使攻击者能够完全控制Web应用程序后面的数据库服务器。攻击者可以使用SQL注入漏洞绕过应用程序安全措施;可以绕过网页或Web应用程序的身份验证和授权,并检索整个SQL数据库的内容;还可以使用SQL注入来添加,修改和删除数据库中的记录。

字符串.方法

一、字符串的检索方法

1、charAt()
2、charCodeAt()
3、indexOf()
4、lastIndexOf()

chatAt()

语法:stringObject.charAt(index)
功能:返回stringObject中index位置的字符,如果没有返回空。

charCodeAt()

语法:stringObject.charCodeAt()
功能:返回stringObject中index位置的字符编码。

indexOf()

语法:stringObjet.indexOf('需要查找的字符')
功能:从左往右在一个字符串中搜索给定的字符串,返回子字符串的位置。
返回值:是number值,如果不存在,就返回-1。

lastIndexOf()

语法:stringObject.lastIndexOf('需要查找的字符')
功能:从右往左在一个字符串中搜索给定的字符串,返回子字符串的位置。
返回值:是number类型,如果不存在,就返回-1。

二、字符串的截取方法

1、slice()
2、substring()
3、substr()

slice()

语法:stringObject.slice(start,end)
功能:截取字符串。
参数:
start:(必须)指定子字符串的开始位置。
end:(可选)表示子字符串到哪里结束,end本身不在截取范围之内,省略不写时候直接截取至字符串末尾。
当参数为负数时候,会将传入的负值与字符串的长度相加。

substring()

语法及功能同slice()完全一样,区别只在于遇到负数时,自动将参数转换为0。
substring()会把较小的数作为开始位置,较大的数作为结束位置。

substr()

语法:stringObiect.substr(start,len)
功能:截取字符串
参数说明:
start :(必需)指定字符串的开始位置;
len:(可选)表示截取的字符总数,省略时截取至字符串的末尾。
当start为负数时,会将传入的负值与字符串的长度相加。
当len为负数时返回空字符串。

三、字符串对象的方法

split()
replace()

splict() 把一个字符串分割成字符串数组

语法:stringObject.split(separator)
返回值:Array
参数:separator(必须)分隔符

replace()

语法:stringObject.replace(regexp/substr,replacement)
功能:在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。只能替换第一个不能替换全部
返回值:string
参数:
regexp:(必需)规定子字符串或者要替换的模式的RegExp对象。
replacement:(必需)一个字符串值
注意:不会修改原字符串,会返回一个新的字符串。

四、字符串转换大小写方法

toUpperCase()
toLowerCase()

toUpperCase()

将字符串转换为大写
返回值:返回一个新字符串,不修改原字符串

toLowerCase()

将字符串转换为小写
返回值:返回一个新字符串,不修改原字符串



作者:楠楠_c811
链接:https://www.jianshu.com/p/3200b0e07cb5
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

int和Intger区别

1、Integer是int的包装类,int则是java的一种基本数据类型 
2、Integer变量必须实例化后才能使用,而int变量不需要 
3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值 
4、Integer的默认值是null,int的默认值是0

方法的重写和重载的区别

Java一些面试题

sql的内联和左联

一、外连接
概念:包括左向外联接、右向外联接或完整外部联接

1.左连接:left join 或 left outer join
(1)左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值(null)。

2.右连接:right join 或 right outer join
(1)右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

3.完整外部联接:full join 或 full outer join 
(1)完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

 

 

关于static静态类

static关键字最基本的用法是:

1、被static修饰的变量属于类变量,可以通过类名.变量名直接引用,而不需要new出一个类来

2、被static修饰的方法属于类方法,可以通过类名.方法名直接引用,而不需要new出一个类来

被static修饰的变量、被static修饰的方法统一属于类的静态资源,是类实例之间共享的,换言之,一处变、处处变。JDK把不同的静态资源放在了不同的类中而不把所有静态资源放在一个类里面,很多人可能想当然认为当然要这么做,但是是否想过为什么要这么做呢?个人认为主要有三个好处:

1、不同的类有自己的静态资源,这可以实现静态资源分类。比如和数学相关的静态资源放在java.lang.Math中,和日历相关的静态资源放在java.util.Calendar中,这样就很清晰了

2、避免重名。不同的类之间有重名的静态变量名、静态方法名也是很正常的,如果所有的都放在一起不可避免的一个问题就是名字重复,这时候怎么办?分类放置就好了。

3、避免静态资源类无限膨胀,这很好理解。