说明public static void main(String args[])这段声明里每个关键字什么作用?
public表示权限修饰符,表明任何类或对象都可以访问这个方法;
static表示main()方法是一个静态方法,即方法中的代码是存储在静态存储区的,只要类被加载后,就可以使用该方法而不需要通过实例化对象来访问;
void表示该方法没有返回值;
main是JVM识别的特殊方法名,是程序的入口方法。
String 类来创建和操作字符串
阐述==与equals的区别?
对象类型不同
equals():是超类Object中的方法。
==:是操作符。
比较的对象不同
equals():用来检测两个对象是否相等,即两个对象的内容是否相等。
==:用于比较引用和比较基本数据类型时具有不同的功能,具体如下:
基础数据类型:比较的是他们的值是否相等,比如两个int类型的变量,比较的是变量的值是否一样。
引用数据类型:比较的是引用的地址是否相同,比如说新建了两个User对象,比较的是两个User的地址是否一样。
运行速度不同
equals():没有==运行速度快。
==:运行速度比equals()快,因为==只是比较引用。
如果要重写一个对象的equals方法,还要考虑什么?
特点
自反性:x.equals(x)一定返回true
对称性:x.equals(y)返回true当且仅当y.equals(x)
传递性:x.equals(y)且y.equals(z),则x.equals(z)为true
一致性:若x.equals(y)返回true,则不改变x,y时多次调用x.equals(y)都返回true
对于任意的非空引用值x,x.equals(null)一定返回false。
代码实现public class Point { private final int x; private final int y; public Point(int x, int y) { this.x = x; this.y = y; } public boolean equals(Object o) { if(!(o instanceof Point)) return false; Point p = (Point)o; return p.x == x && p.y == y; } //...}
Java中Exception和Error有什么区别?
Exception(异常)应用程序中可能的可预测、可恢复问题。一般大多数异常表示中度到轻度的问题。异常一般是在特定环境下产生的,通常出现在代码的特定方法和操作中。在 EchoInput 类中,当试图调用 readLine 方法时,可能出现 IOException 异常。Exception 类有一个重要的子类 RuntimeException。RuntimeException 类及其子类表示“JVM 常用操作”引发的错误。例如,若试图使用空值对象引用、除数为零或数组越界,则分别引发运行时异常(NullPointerException、ArithmeticException)和 ArrayIndexOutOfBoundException。
Error(错误)运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。例如,当 JVM 不再有继续执行操作所需的内存资源时,将出现 OutOfMemoryError。
处理异常的方式
使用try..catch..finally进行捕获;
在产生异常的方法声明后面写上throws 某一个E ...
简述什么是值传递和引用传递?
值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参 数的值。
引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。
如何将String类型转化成Number类型?
使用Integer.parseInt()如果你知道字符串表示的是一个整数,可以使用Integer.parseInt()方法:
String numberStr = "123";int number = Integer.parseInt(numberStr);使用Double.parseDouble()如果字符串表示的是一个浮点数,可以使用Double.parseDouble()方法:
String numberStr = "123.456";double number = Double.parseDouble(numberStr);
使用new Integer() 或 new Double()这种方法已经被视为过时,不推荐使用,但仍可作为参考:
String numberStr = "123";Integer number = new Integer(numberStr); // 整数Double number = new Double(numberStr); // 浮点数
使用NumberFormat如果你需要进 ...
解释什么是语义化的HTML?
什么是html语义化?
官方解释:html语义化是指用合理的html标记以及其特有的属性去格式化文档内容。通俗的讲:就是用合理、正确的标签来展示内容。(标签指一种标记方式,如<title>,表示标题信息;也可以理解为人体骨架的某一块骨头,专属名称叫什么)。
为什么需要语义化?
易读,易书写,易理解(多数情况,标签英文翻译的含义就是其功能含义);
利于SEO搜索:语义化可以和搜索引擎建立良好的联系,有利于爬虫抓取有效信息;因为爬虫依赖于语义化标签来确定上下文和各个关键字的权重。
易于跨设备解析,进而完成渲染网页(如屏幕阅读器、盲人阅读器、移动设备);
利于规范化:方便团队开发和维护,也遵循W3C规范。
h5新增标签
结构化标签:<header>:头部标签 ;<nav>:导航标签 ;<article>:内容标签 ;<section>:定义文档某个区域; <aside>:侧边栏标签 ;<footer>:尾部标签;
多媒体标签:*音频标签:audio; <video src="文件地址&qu ...
简述什么叫优雅降级和渐进增强?
优雅降级(Graceful Degradation):优雅降级是指首先针对最新的浏览器或设备进行开发,利用其提供的最新特性和功能来构建网页。然后,通过检测用户使用的浏览器或设备,如果发现其不支持某些特性或功能,就会提供一个替代方案,以确保网页在旧版本的浏览器或设备上也能够正常显示和使用。这种策略的目标是尽可能地提供最佳的用户体验,但在旧版本浏览器上可能会有一些功能缺失或效果不佳。
渐进增强(Progressive Enhancement):渐进增强是指首先针对基本的浏览器或设备进行开发,确保网页的核心功能在所有浏览器上都能够正常运行。然后,通过检测用户使用的浏览器或设备,如果发现其支持某些额外的特性或功能,就会逐步增强网页的功能和用户体验。这种策略的目标是确保网页在所有浏览器上都能够正常运行,并逐步提供更多的功能和效果。
总结起来,优雅降级是从高版本向低版本适配,提供替代方案以确保兼容性;而渐进增强是从低版本向高版本适配,逐步增强功能和用户体验。两种策略都是为了在不同浏览器或设备上提供最佳的用户体验。
如何实现浏览器内多个标签页之间的通信?
LocalStorage 和 sessionStorage通过使用localStorage和sessionStorage,可以在不同的标签页中保存和读取数据。
使用CookieCookie 是存储在客户端的小文件,可以存储少量数据并在多个标签页之间共享。在一个标签页中设置的 Cookie 可以被其他标签页中的 JavaScript 访问和修改。
BroadcastChannelBroadcastChannel API 允许在同源的不同上下文(例如,不同标签页、iframes、workers)之间进行简单的通信。
SharedWorker可以使用SharedWorker创建一个共享的工作线程,它可以在同源的多个上下文之间共享。这意味着它可以用于在不同标签页之间进行通信。
解释什么是盒子模型?
标准盒与怪异盒的区别在于他们的总宽度的计算公式不⼀样。
标准模式下总宽度=width+margin(左右)+padding(左右)border(左右);
怪异模式下总宽度=width+margin(左右)(就是说width已经包含了padding和border值)。
标准模式下如果定义的DOCTYPE缺失,则在ie6、ie7、ie8下汇触发怪异模式。
当设置为box-sizing:content-box时,将采⽤标准模式解析计算,也是默认模式;
当设置为box-sizing:border-box时,将采⽤怪异模式解析计算;