墨烯的Java技术栈-Java基础-002

今天将正式说Java的语法

一.数据类型

1.基本类型

整数类型(初始值为0)

byte        占用一个字节 范围从-128~127

short       占用两个字节 范围从-32768~32767      

int            占用四个字节 范围从-2147483648~2147483647

long         占用八个字节 范围从-9,223,372,036,854,775,808~9,223,372,036,854,775,807

浮点数类型(初始值0.0)

float        占用四个字节 可以存储6~7位有效数字

double    占用八个字节 可以存储到15个有效数字

字符类型(初始值为" ")

char        占用两个字节

布尔类型(初始值为false)

boolean        (true/false)

字节(Byte 计算机描述存储容量和传输容量的最小单位 是计算机基本的存储单位 (举个例子 就比如有100ml的水杯 200ml的水杯 400ml的水杯 800ml的水杯 而现在规定100ml的水杯是最小的水杯 那么对应的就是byte(100ml的水杯) short(200ml的水杯) int(400ml的水杯) long(800ml的水杯)

)
)

还有一个特殊的上一篇就提到过void 空类型(具体请看上一篇)

2.包装类型

Byte

Short

Integer(对应基本类int)

Float

Double

Character(对应基本类char)

Boolean

看到这是不是很熟悉 是的它跟上面的基本类一一对应 包装类 顾名思义 它就是对基本类进行包装 让类拥有更多的属性和方法 使用基本类可以被当对象来处理

(其实这个就在java.lang包 而java.lang包就在rt.jar包里 下面就以Integer为例)

(用JD-GUI解包软件解包得出的 感兴趣的可以去看看官方写出的程序)

static 静态的(上一篇对这具体说过 感兴趣的可以去看看)

final 最终的(从它的意思是就可以看出 它的绝对性

对类的时候 这个类就不能再被继承了 只有本体可以使用 也不能被子类覆盖

对方法的时候 这个方法也不能再被子类覆盖 也就是说子类没办法修改它 即无法对父类的这个方法重写

对变量的时候 这个变量的值也就只能被赋值一次了 不能被改变 同时声明为final的变量必须立刻赋值 (其实不直接赋值也没啥事 只不过会报错看起来不舒服而已) 这种情况下也可以当成常量使用

)

extends继承

implement实现

(这两个后面会慢慢知道的 这里就先不具体说了)

(图片上其他词就不一一解释了 后面会提到 每一个大阶段的结束都可以考虑去解包看看官方写的代码 可以学到很多东西)

基本类和包装类的区别

包装类

是对象 拥有字段和方法 对象的调用都是通过引用对象的地址;

引用的传(这个不太好举例子 如果学过栈和堆就好理解了 又或者类似C#中的指针)

需要new在堆内存中进行new来分配空间

是把对象放在堆中,然后通过对象的引用来调用

初始值都为null

在集合中使用

相对应的

基本类

不是对象

值的传递

值保存在值栈中

整数类型初始值为0 浮点数初始值为0.0 boolean初始为false

基本数据类型直接赋值就行

3.缓存池

用来提高应用程序性能的技术 ,它允许我们在内存中保留经常访问的数据 以避免重复读取相同的数据(这个在以后做项目时候会经常用到)

常用的话 主要是JDBC的数据库连接池 在这里就先不具体说了

二.String

1.概念

(1)char[]->String类对象用来存储字符集

(2)this.value = " ".value->字符串常量对象是用双引号括起的

(3)字符串的字符使用Unicode编码 一个字符占两个字符->char为基础 char占两个字符

(4)implements 实现了接口Serializable(串行化 网络传输) 实现Comparable(String对象可以比较大小)

实现了charsequence(允许对字符序列进行操作和处理)

(5)final char[] value->String是final类 它的值不可以指向新的地址

(6)private->说明这个变量只能在这个类使用

(如果是初学者第四个不要求理解 知道有这个东西就行)

2.不可变的好处

1)线程安全(线程是什么后面会单独开一篇)

不可变这一特性就可以情况下防止一个线程对String做修改导致另一个线程运行结果发生变化

2)节约空间

String存放在堆里面 其他线程可以调用 可以被分两种情况 一种是直接赋值 String 变量名 = "zfc";来创建 那么就会放在堆中的字符串常量池中 这种情况是可以重复使用的 而new方法出来的 是直接放堆里面 无法重复使用

3.创建对象的三种方式

1)直接赋值 String s = "zfc";

2)new方法 String s = new String("zfc");

3)valueof方法(这个是静态方法 用前设置static) String s = Stirng.valueof("zfc");

同时也不得不提一下String家族其他四个了

这里就随带提一小部分

StringBuffer(是一个可以存储和操作字符串的类,允许对字符串进行修改 算是官方对特殊情况的字符串一种补充吧)

StringBuilder(也是一个可变的序列 细致化的比较细致化的 就比如StringBuffer是字符串与字符串的添加 而它是字符串中添加跟集合一样append末尾添加 insert指定位置插入)

StringCoding(字符串编码 顾名思义)

StringIndexOutofException(字符串索引异常 一般只有你索引不在合法范围内 超过字符串长度会遇到)

4.StringPool

也就是字符串常量池 存在堆空间里面用来存放字符串常量的 出现这个的原因嘛 字符串在一般做项目时候会经常用到 而堆空间回收频率高 字符串放堆里面可以加快没用的字符串回收效率 方法回收的频率就比较低了 所以为了性能的优化 就出现了这个东西

是一个HashTable结构 也就是数组+链表组成(学校教的数据结构一定要好好学)

如果放的字符串很多 就会造成Hash冲突 导致链表很长 空间复杂度上是十分不推荐这样弄的

当然StringPool中的相同字符串只会保留一份(这个没什么好说的)

  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值