java核心基础(1)

本文介绍了Java语言的主要特性,包括简单性、面向对象、分布式、健壮性和安全性等。强调了Java的可移植性和高性能,并讨论了JDK安装时的注意事项。文章还详细讲解了Java的基本数据类型、变量初始化、常量的final修饰以及枚举类型。此外,还涉及了字符串操作、类型转换和多线程中的StringBuilder和StringBuffer的使用,以及switch语句的特性。
摘要由CSDN通过智能技术生成

java语言的特性

1.简单性:java语言比c要简单很多 2.面向对象 : java语言是一门面向对象的语言 3.分布式 4.健壮性 5.安全性:java程序一段出问题对整体影响小 6.体系结构中立 7.可移植性:jvm中运行,一次编译永久运行 8.解释性:java语言能够被翻译

9.高性能 : java语言是一门强语言 它的运行速度就很快 js和Python都属于弱语言 10.多线程 11.动态性 :现在的语言都具有动态性

JDK安装注意事项

注意:任何开发软件都不要最新的 因为首先刚出现不稳定,其次,网上的解决办法比较少

java的八个基本数据类型

1.byte 1字节

2.short 2字节

3.int 4字节

4.long 8字节

5.float 4字节

6.double 8字节

7.boolean类型是32位 4个字节

8.char类型是根据内存编码决定的

变量的初始化

java当中的引用类型完全等价于c中的指针类型

在方法的里面声明的变量是没有默认值的;在方法外面定义的变量相当于类的一个属性,是new出来的,就有了默认值

常量final(面试点)

一。final有4个作用:

1、final修饰的是常量,不可以被第二次赋值

2、final修饰的类不可以被继承

3、final修饰的方法不可以被重写(覆盖),可以重载。// final int B = 20;

4、final防止指令重排序,保障多线程下的并发安全

二。定义常量一般用大写

(面试点)final不修饰复杂的数据类型,只修饰基本类型和不可变类型:

final修饰B不可以改变,但是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修饰的不可被继承的

字符串有哪些常用函数(面试点)

1.equals()函数,比较字符串是否相等;2.split()函数,拆分字符串;3.replace()函数,替换字符串;4.indexof()函数,返回字符索引;5.substring()函数,返回子字符串;6.concat()函数,连接字符串;7.toLowerCase()函数,将字符串转换为小写;8.toUpperCase()函数,将字符串转换为大写;9.length()函数,返回字符串长度

面试大重点)构建字符串(String,StringBuilder,StringBuffer)

l String,StringBuilder,StringBuffer的区别是什么:

1、StringBuilder,StringBuffer速度远远高于String类型的;

2、StringBuffer(内部加了锁,多线程下安全,速度稍微比StringBuilder慢一点,内部结构一样的)

3、StringBuilder和StringBuffer拼接速度都很快,StringBuffer要稍微慢一点,因为StringBuffer保证了安全

l StringBuilder,StringBuffer速度快的原因:

内存块是一字节为一单元,cpu想要操作内存块必须先传送地址,穿8字节的数据要发送8次指令,因此耗费时间为20ns*8;(cpu通过导线传送一次指令耗时大约20ns)

l 计算机存储会先判断空间是否足够,如果空间足够,计算机存储的数据会尽可能连在一起

l 操作系统重新划分了逻辑存储单元——页(4KB),cpu下达一次地址指令,内存会把4KB的逻辑

地址和数据全部返回给cpu,即一次指令返回4096个地址。所以存储10000个基础物理单元的数据,只需要下达3次地址指令,加快了读取速度。

l 每个逻辑单元有一个逻辑地址(即第一个基础物理单元的地址),来定位每一个逻辑单元,后面三个基础物理单元地位不到,因此一个逻辑单元只能存储一个变量,剩下三个基础物理单元会浪费(牺牲空间提升时间)

为什么 StringBuilder,StringBuffer速度远远高于String类型的

1、字符串申请多大的空间就有多大的空间,超出限制存储不允许,也不允许在原地址修改,只能重新申请空间。

2、StringBuilder, StringBuffer一次就申请足够大的空间,可以在原地址修改

switch击穿(面试点)

如果不写break语句就会一直向下执行,一直到遇到break为止

swich语句写法

case的标签可以是 char、byte、short或int表达式还有枚举类型常量

大数值

有些数会特别大的时候 最大的数值类型long能存储19位数字 当它也存不下的时候 就需要用到大数值 同时 用它计算精度也会很高

是一个包装类

//推荐一个网站 www.pearson.com

//里面有很多底层知识开发原理相关知识的书籍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值