一. JAVASE
1. java语言的程序为什么可以实现跨平台(如何理解JAVA语言的跨平台特性)?
核心:java虚拟机
分析:我们所写的JAVA程序是".java"为后缀的源文件,但这些文件计算机无法直接执行,需要先进行编译环节,通过编译变为以".class"为后缀的字节码文件,这个字节码文件交由JVM(JAVA虚拟机)来运行.
那我们只要在需要运行java应用程序的OS(操作系统)上,安装一个JVM,由JVM来负责Java程序在该系统中的运行即可。不同的OS(操作系统)都有与之对应的JVM,所以只需要写一个Java程序,就可以在多个不同的操作系统上执行。这样就实现了Java程序的跨平台性。也称为Java具有良好的可移植性。
总结为以下几点:
1.我们编写了一份java代码,可以运行在多个不同的系统之中
2.Java代码需要编译,编译生成文件是.class为后缀的字节码文件
3.字节码文件需要交给JVM(java虚拟机)来执行
4.我们可以针对不同的系统,安装这个系统的JVM
5.一份代码 处处运行
2.JDK JRE JVM三者之间的关系是什么?
JVM是Java虚拟机,是虚拟出来的一个系统,我们常说的hotsport是JVM的一种实现;JRE是Java的最小运行环境,它包含JVM和系统类库;JDK是Java的最小开发环境,它包含JRE+编译运行工具。
3.标识符的命名规范是什么?
1. 标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含 @、%、空格等其它特殊字符
2. 不能以数字开头。如:123name 就是不合法
3. 标识符严格区分大小写。如: tmooc 和 tMooc 是两个不同的标识符
4. 标识符的命名最好能反映出其作用,做到见名知意。
5. 标识符不能是Java的关键字
4.简述一下JAVA中的八大基本数据类型?
类型名称 | 字节空间 | 默认值 | 取值范围 |
byte | 1 | 0 | -128 ~ 127 |
short | 2 | 0 | --32768 ~32767 |
int | 4 | 0 | -21.47亿 ~ 21.47亿(-2147483648~2147483647) |
long | 8 | 0 | -9223372036854775808~9223372036854775807 |
float | 4 | 0.0F | 1.17549435E-38 ~ 3.4028235E38 |
double | 8 | 0.0D | 4.9E-324 ~ 1.7976931348623157E308 |
char | 2 | '\u0000' | 0 ~ 65535 |
boolean | 1 | FALSE | false true |
5.JAVA中基本类型转换的规则有哪些?
口诀:
小到大,直接转 大到小,强制转 浮变整,小数没
低 ------------------------------------> 高
byte,short,char→ int→ long→float→double
6.什么是 逻辑与 与 短路与(&和&&)?
逻辑与和短路与都是需要整个判断都为true的时候表达式才为true,当某一个判断为false时逻辑与会继续执行后续判断,短路与则不会再继续执行了。(逻辑或和短路或也是如此)
7. switch...case判断条件可以使用字符串类型吗?
在jdk1.7之前只能使用整型,在jdk1.7开始可以使用字符串类型。
附:支持的数据类型有 byte short int char String
8.如何定义一个方法?
修饰词,返回值类型,方法名,参数列表,方法体
9. Java中常用的循环方式有哪些?你能说说他们的区别吗?
while循环、do...while循环、for循环,while循环可能一次都不执行、do...while循环至少会执行一次,for循环也有可能一次都不执行,但是我们最常用的循环方式。
10. break和continue有什么区别?
break用于结束循环,continue用于跳过本次循环。
11.什么是嵌套循环,如何跳出嵌套循环,你觉得嵌套循环多了有什么样的问题?
嵌套循环就是循环中套循环,外层循环控制行,内层循环控制列,运行规则遵循外层循环走一次,内层循环走所有次;当我们想跳出整个嵌套循环的时候,可以使用outer:标签来定义循环,使用break outer来跳出整个循环;嵌套循环我觉得一般需要控制在3层以内,如果嵌套太多可读性不好,而且可能存在设计问题。
12. 基本类型画“==”号和引用类型画“==”号有什么区别?那引用类型要判断内容是否相等应该怎么办?
基本类型画“==”号是判断两个值是否相等;
引用类型画“==””号是判断两个对象在堆的内存地址是否相同;
如果引用类型需要判断内容是否相等,应该使用重写后的equals方法(String类重写了Object中的equals方法);
13. 说一下权限修饰符各自的范围?
用来控制一个类,或者类中的成员的访问范围。
TIPS:default是表示不写修饰符,默认,如果写default单词来修饰会报错
14. this 与super的区别?
总结:java中的this代表的是指向对象本身的一个指针,super是发生在继承关系中的,代表的是指向父类对象的一个指针。
this.成员变量名,是访问本类的成员变量;如果参数super.成员变量名,是访问的父类的成员变量。
this.方法名,是访问本类的方法,我们在调用方法时,可以不写this,编译器会自动生成一个隐式的this;super.方法名,是访问父类的方法。
this(),是访问的本类的构造方法;super()是访问父类的构造方法,并且在初始化子类时,一定会先初始化父类。默认子类中的构造器会隐式的调用super()方法。
15. 重写与重载的区别?
重载:在一个类中的现象:同一个类中,存在方法名相同,参数列表不同的方法
重写:是指建立了继承关系以后,子类对父类的方法不满意,可以重写,遵循两同两小一大原则
重载的意义:是为了外界调用方法时方便,不管传入什么样的参数,都可以匹配到对应的同名方法
重写的意义:在不修改源码的情况下,进行功能的修改与拓展。
16. 请你说一下面向对象的特征?那什么是封装、什么是继承、什么是多态?
封装、继承、多态;
我们把一些具有相同属性或行为的类抽取出来,就是封装;对类的封装,就是封装的对象的属性和行为;对方法的封装,封装的是具体的功能。
继承是为了代码的重用,Java中的继承是单继承的,一旦继承子类就具有父类+子类的属性和行为;
我们声明一个父类型的引用指向子类型的对象,就是多态。多态的主要表现形式就是重写和重载。
17. 请你说一下java中的static关键字?
static 修饰的内容,是静态资源,它属于类资源,随着类的加载而加载,优先于对象加载,而且只加载一次。它可以被全局所有对象所共享,值只有一份。
static修饰的变量,称为静态变量,存在于方法区(元空间)中;通过类名.变量来访问,当所有对象数据都一样时使用。
static修饰的方法,称为静态方法,存在于方法区(元空间)中;通过类名.方法名来访问,当方法的操作仅与参数有关而与对象无关时使用,例如咱们常写的工具类当中的方法。
还有一种static静态块,在被类加载时自动执行,存在于方法区(元空间)中,常常用于加载静态资源,例如图片,音频,读取文档等。
18.说一下顶级父类Object类中的toString()、hashCode()、equals()方法?
toString() :重写前 打印的是地址值
重写后 打印的是对象的属性 与 属性值
equals() : 重写前 比较的是两个对象的地址值 底层用 == 来判断
重写后 比较的是两个对象的:类型+属性 + 属性值
hashCode(): 返回对象的哈希码值
二.前端
1.get提交数据和post提交数据有什么区别?
get方式:是默认的提交方式,但是不安全(都展示在地址栏),长度受限
post方式:安全,数据不在地址栏显示,看不见啦,提高安全性
持续更新中...