目录
StringBuffer、StringBuilder与String的区别?
为什么StringBuffer、String、StringBuilder会比String快?
推荐一个网站 www.pearson.com
里面有很多底层知识开发原理相关知识的书籍
java语言的特性
1.简单性:java语言比c要简单很多 2.面向对象 : java语言是一门面向对象的语言 3.分布式 4.健壮性 5.安全性:java程序一段出问题对整体影响小 6.体系结构中立 7.可移植性:jvm中运行,一次编译永久运行 8.解释性:java语言能够被翻译 9.高性能 : java语言是一门强语言 它的运行速度就很快 js和Python都属于弱语言 10.多线程 11.动态性 :现在的语言都具有动态性
JDK安装注意事项
注意:任何开发软件都不要最新的 因为首先刚出现不稳定,其次,网上的解决办法比较少
java的八个基本数据类型
boolean类型是32位 4个字节
char类型是根据内存编码决定的
变量的初始化
java当中的引用类型完全等价于c中的指针类型
在方法的里面声明的变量是没有默认值的;在方法外面定义的变量相当于类的一个属性,是new出来的,就有了默认值
final
final修饰的变量不能被赋值
final修饰的方法不能被重写
final修饰的类不能被继承
final防止指令重排序(多线程中)
final只能修饰基本类型和内存地址不可变类型的数据
final修饰变量的目的就是它的值不在发生变化,所以一般不用来修饰复杂类型
引用类型的强制转换注意事项
只能是两个类型具有继承关系,就是说一个类型是另一个类型的子类类型,
Father father = new Son(); Son son = (Son)father;
强制类型转换后依然满足多态
枚举类型
也是一种类,只不过就是一上来就限制了对象的个数
它也可以有自己的构造方法,也可以有自己的属性
基本类型转换(注意int转float)
E代表的是10的38次方
小转大一般不会丢失精度
为什么int转float精度丢失?
int32位 float也是32位
但是同样的位数 float的数值范围却比int大很多 也就意味着float的精度不准确 他只能精确到6-7位 而int能精确到10位 所以int转float会丢失精度
char类型和int类型转换
可以相互转换 char的底层也是通过数字实现的,所以char类型可以+int类型 char类型也可以+char 但是要用int类型去接收
String字符串
它的源地址的内容是不可变的,可以改变它的指向
字符串是final修饰的不可被继承的
字符串有哪些常用函数(面试点)
StringBuffer、StringBuilder与String的区别?
他们都可以用来进行拼接字符串,但是StringBuffer、StringBuilder要比String快很多
为什么StringBuffer、String、StringBuilder会比String快?
原因:String是不可变得 每次拼接都需要重新开辟地址 性能上就很慢,而其他两个都是直接开辟一个很大的空间(原理都是一开始直接申请一个很大的数组)因此是可变的,性能上远远大于String
StringBuffer是加锁的 多线程下较为安全,因此性能上稍微比StringBuilder快一些
switch击穿(面试点)
如果不写break语句就会一直向下执行,一直到遇到break为止
swich语句写法
case的标签可以是 char、byte、short或int表达式还有枚举类型常量
大数值
有些数会特别大的时候 最大的数值类型long能存储19位数字 当它也存不下的时候 就需要用到大数值 同时 用它计算精度也会很高
是一个包装类