每日一练day01
01Java的特点和优点,为什么要选择java
1.java语言的特点是:一次编译,到处运行,即平台无关性;是纯面向对象的语言。2.JAVA语言的优点有:内置的类库简化了开发人员的设计工作;具有较好的安全性和健壮性;开发人员不需要对内存的使用进行管理。
3.选择JAVA的原因是:使用范围很广,安卓操作系统的应用软件目前大部分还是使用JAVA语言编写。
02Java基本数据类型和引用数据类型
1.提供8种基本数据类型:byte(8), short(16), int(32), long(64), float(32), double(64), char(16), boolean,这些基本数据类型有对应的封装类;这基本数据类型在声明之后就会立刻在栈上被分配内存空间。
2.其他类型都是引用类型:类,接口,数组,String等,这些变量在声明时不会被分配内存空间,只是存储了一个内存地址。
03 抽象类和接口的区别
**相同点:**1、两者都不能实例化;2、可以拥有抽象方法。
**区别:**1、抽象类定义的关键字是abstract class,接口定义的关键字是interface;
2、属性上,抽象类可以有静态变量、常量和成员变量,接口只能有常量;
3、抽象方法可以有普通方法,而接口jdk1.8之前只能有抽像方法(1.8之后,增加了静态方法和默认方法);
4、抽象方法可以有构造方法,接口不可以有构造方法。
5、一个类只能单继承一个父类,而一个接口可以继承多个父接口,同时,一个类可以实现多个接口却没有实现多个父类这一说法;6、抽象方法在业务编程上更像一个模板,有自己的功能,同时也可以有优化补充的多种形式,而接口更像是一种规范和要求,实现就要按照要求来进行。
04什么是final关键字
1.final被用来修饰类和类的成分。
2.final属性:变量引用不可变,但对象内部内容可变;被final修饰的变量必须被初始化。
3.final方法:该方法不能被重写,但子类可以使用该方法。
4.final参数:参数在方法内部不允许被修改 5.final类:该类不能被继承,所有方法不能被重写,但未被声明为final的成员变量可以改变。
05static修饰符
static修饰变量:属于静态变量也叫类变量,直属于类对象而不是实例,可以通过类名访问,它一般会在类加载过程中被初始化。生命周期贯穿整个程序。存储在方法区中。
static修饰方法:即静态方法,一个类中的静态方法不能访问该类的实例变量,只能访问静态变量。同时还存在一个静态初始化块,他在类加载过程中被调用用于对该类中的静态变量进行操作。
static修饰类:即静态内部类,他只能以内部类的形式存在,可通过外部类的类名调用。它是他也只能访问到外部的的静态成员。
06String类,以及new string和使用字符串直接量
String类被final修饰,所以不能被继承。创建String对象时可以使用字符串直接量,如String str=“1abc”, 另一种String str=new String(“1abc”),前者使用常量池来管理,后者先判断常量池中是否已存在此字符串,不存在就也在常量池创建,再在堆内存创建一个新的对象,因此后者开销更大。
07String,String Buffer,String Builder有什么区别
String是final修饰不可被继承不可变,即时修改也是新建一个变量,String通过不变的特性实现了线程之间的可见性,一定条件下可以保证线程安全。
StringBuffer和StringBuilder对象是可变的。
StringBuffer实现了Synchronize封装使得它线程安全,而StringBuilder是线程不安全的。所以从运行速度来说,StringBuilder>StringBuffer>String
08==和equals()的区别
==是一个运算符。equals则是string对象的方法。
1、基本数据类型比较: ==和Equals都比较两个值是否相等。相等为true 否则为false;
2、引用对象比较 :==和Equals都是比较栈内存中的地址是否相等 。相等为true 否则为false;
需要注意的是:1、string是一个特殊的引用类型。对于两个字符串的比较,不管是 == 和 Equals 这两者比较的都是字符串是否相同;
2、当你创建两个string对象时,内存中的地址是不相同的,你可以赋相同的值。 所以字符串的内容相同。引用地址不一定相同,(相同内容的对象地址不一定相同),但反过来却是肯定的;
3、基本数据类型比较(string 除外) == 和 Equals 两者都是比较值
09Java8新特性
1.Lambda 表达式 − Lambda 允许把函数作为一个方法的参数(函数作为参数传递到方法中)。
2.方法引用 − 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。
3.默认方法 − 默认方法就是一个在接口里面有了一个实现的方法。
4.新工具 − 新的编译工具,如:Nashorn引擎 jjs、 类依赖分析器jdeps。
5.Stream API −新添加的Stream API(java.util.stream) 把真正的函数式编程风格引入到Java中。
6.Date Time API − 加强对日期与时间的处理。
7.Optional 类 − Optional 类已经成为 Java 8 类库的一部分,用来解决空指针异常。
8.Nashorn, JavaScript 引擎 − Java 8提供了一个新的Nashorn javascript引擎,它允许我们在JVM上运行特定的javascript应用。