JAVA基础知识_01

1.任何语言都有自己擅长的领域,因为他有自己的库函数

2.javac XXX.java — XXX.class 由jdk翻译成中间语言class文件
java XXX 由jre直接翻译成汇编或者C语言

java se 就是java核心技术 ,然后由java社区引入大牛开发第三方功能,开发出越来越多的功能,形成java生态
JAVA社区:JAVA开发的一个共同开发JAVA的平台
JAVA生态:通过JAVA社区里的人不断开发JAVA,使得JAVA越来越好用,然后吸引更多人来开发JAVA

JAVAEE:java web开发(JAVA全家桶),包含了JAVA的所有功能
JAVAME:安卓开发

3.面试点:SDK:第三方开发的函数库在使用的时候会提供使用样例和使用说明(sdk中的代码指的是一个简单的使用这个库搭建的真实样例,比如说一个游戏开发库,sdk里边包含一个用这个库搭建的简单小游戏)

4.Java命名规范:大驼峰:首字母大写,遵循驼峰命名法,每个单词的首字母都要大写
小驼峰:第一个单词首字母小写,后边单词的首字母大写
类名:大驼峰 ;
变量名,文件名,方法名:小驼峰 ;
文件夹名字:全部小写 ;
常量名字:所有字母大写

5.整数:byte-8bit short-16 int-32 long-64 (1bit就是一个二进制的0,1)1B(一字节)=8bit
小数: float-32 double-64
字符:char-根据编码决定
布尔:boolean-32
在这里插入图片描述

  1. long x= 40000000L 长整型后面要加后缀L或1
    八进制有前缀0,如010对应八进制中的8
    前缀0b表示二进制 int x = 0b1001就是9
    前缀0x表示十六进制。

  2. -9 ------> 1 0001001 原码
    1 1110110 反码=原码除了符号位,其他各位相反
    1 1110111 补码=反码+1

对于正数,计算机内部也需要用补码表示,但是正数的补码就是原码本身
bite short int long 方式都一样

在这里插入图片描述

8.float

在这里插入图片描述

在这里插入图片描述

坐标用short,三原色用byte(数字越小颜色越深),56bit确定一个像素点
在这里插入图片描述

10.面试点:记事本的显示原理:记事本有一个存储像素点的库,在记事本打字存储的是编码,读取的时候读取这些编码然后再从库里匹配相应的像素点的信息,根据信息将图像显示在屏幕上

11.为什么8bit一单位?:节省空间和时间,太小会造成不必要的空间浪费去存储他们的地址,并且当传输数据的时候需要传输的信息也更多
在这里插入图片描述

12.为什么boolean要32bit?:cpu内部的高速缓存里边的东西越多被读取的概率就越大,读取效率就越小,所以增大boolean,使得高速缓存里的数据变少,更快的读取boolean。而且现在4kb为一个存储单元,不会造成boolean传输浪费时间

13.final:(重要面试点)被final修饰的类不可以被继承,被final修饰的方法不可以被重写,被final修饰的变量不可被更改,final防止指令重排序,保证多线程下的安全。常量的名字所有字母大写

14.打算法必用:
import java.lang.Math.*;
开平方
在这里插入图片描述

x的a次方

在这里插入图片描述

15.a = a++;a的值不变
当连续有两次等于,不会刷新
a = ++a没有问题

16.向左移动右侧补0,向右移动左侧补符号位(>>>这种都补零)
N进制向左(右)移动M位,这个数就相当于乘(除)以N的M次方

计算机用的都是位运算
在这里插入图片描述
在这里插入图片描述

17.面试点:字符串比较相等只能用equals。 str.equals(str4);
重写equals一定要重写hashcode()方法,因为hashmap集合需要equals和hashcode配合使用

18.String API
char x = str.charAt(2)。调用charAt获取字符串的第几个字符。
int y = str.codePointAt(2);获得指定字符的编码值(码点)
替换
在这里插入图片描述

字符串长度 int x = str.length();
字符串切割,用数组接收数据 String[] arr =str.split("=");
for(String a:arr){
System.out.println(a);}

在这里插入图片描述
在这里插入图片描述

19.面试点:String和StringBuilder, StringBuffer 区别
StringBuilder比String构建字符串速度要快很多。
StringBuffer内部原理同StringBuilder一样,是多线程下的安全版本,因为加锁了,稍微慢一丢丢相对StringBuilder。
凡是带buffer的—>内部实现都是基本类型数组

20.字符串是不可变字符串,因此在每次拼接时都要开辟一块新的空间。

21.内存的默认存储单元是一个字节

22.操作系统在读任何数据之前,首先要把地址的指令发过去,指定在哪读,然后才能获得那个地址的数据。这个是根据计算机的存储器机制决定的,在计算机中,CPU向存储器发送一个01代码,即地址,然后存储区反馈出该地址的信息。

23.通常CPU读取一次信息的时间是15~29纳秒,也就是从内存中读取一个单位用的时间。当单个块增大时,单元减少,读写次数减少,获取同样大小的信息的时间自然而然也会减少。CPU单词读写数据的速度很快,读了多少时间差异不太大。单个的存储单元越大,性能越快。

24.当单个存储单元定的比较大的时候,里边可能存储多个数据,可能有信息找不到。单个存储越大,空间浪费越严重。存储单元越大,性能越快,但是空间浪费越严重,存储单元越小,性能越慢,但是空间利用越充分。

25.一个变量至少要消耗一个存储单元(4KB),这是由操作系统决定的。

26.数组比较节省空间,因为是在同一个存储单元中,这时只需要掌握数组地址,就可以推算出其他的数字地址,进而进行高效率的高密度存储。

27.Java机制:申请的时候多大就只能用多大,不能超出,会被拦截,所以String类型如果拼接字符串的话需要重新申请一个新的空间。

28.偏移地址:对存储单元进行划分,使得可以进行更加精细的寻址,某个存储单元的地址是基地址,偏移地址类似于“门牌号”,方便找到存储单元内的某个位置。有效地址=基地址+偏移地址

29.StringBuffer是先申请一个大空间,只要原来的空间足够,就不用重新申请新的地址,这样一来效率非常高。StringBuilder不是每次循环都会申请空间,在每次放入的时候都会判断是否超出了之前申请的空间,空间不够后才会重新申请,然后申请一个更大的空间,然后复制。用字符串的话,每次都要申请新的存储页。

30.所有语言都会支撑StringBuilder和StringBuffer这种好的理念,这种只是一种字符串处理策略。

31.大规模变化字符串用StringBuffer,少量用字符串。

32.格式化
在这里插入图片描述

33.获取当前文件代码所路径
String dir = System.getProperty(“user.dir”);

34.Word的编译库比记事本多了颜色和亮度。
Word对常用字体字号进行编码,其余等比变化,WPS基本都是等比变化,所以Word比WPS速度快

  1. 面试题:switch击穿
    switch(a){ case 10:
    System.out.println(“你是最棒的10”);
    break;
    case 20:
    System.out.println(“你是最棒的,话费20”);
    break;
    case 50:
    System.out.println(“你是最棒的,话费50”);
    break;
    default:
    System.out.println(“你是最棒的,啥都木有”);
    break;

}
switch语法就是选中一个变量,然后在其作用域和case进行对比,若对比成功则执行下面的语句,执行到break就会强行停止。
switch击穿就是忘记写break,执行完后会继续向下执行,知道遇见break

36.break和continue
break只能打断包裹自己的for循环,不能打断多层
continue是终止本次循环,或者说跳过本次循环,直接进行下一次循环。

37.面试题:case 标签可以是类型为 char、byte、 short 或 int 的常量表达式。
枚举常量。
从 Java SE 7开始, case 标签还可以是字符串字面量。

38.大数值:Biglnteger 类实现了任意精度的整数运算, BigDecimal 实现了任意精度的浮点数运算。

39.数组:
数组是引用类型,引用类型与指针的用法一样

40.数组的声明方式:
在这里插入图片描述

不规则数组也是合法的
int[][] b = {
{0,0,0},
{89,0},
{0,0,0,0,0}
}
用这种方式定义的数组叫做不规则数组,也就是子数组长度不同的数组

41.多维数组和操作系统中的多级索引类似,可能实现起来就是一个东西。
在多维数组中,数组元素中存取的值其实就是存的地址
二维数组的时间复杂度是O(1)
在这里插入图片描述

42.字符串类型数组:
逻辑地址连续,物理地址不一定连续。
在这里插入图片描述

43.匿名数组

new int[] { 17, 19, 23, 29, 31, 37 }
这种表示法将创建一个新数组并利用括号中提供的值进行初始化,数组的大小就是初始值的个数.

44.引用类型中“=”是浅拷贝,浅拷贝就是改变地址指向,深拷贝则是直接再申请一个新空间,将数值拷贝后让新变量指向它

45.对数组快速排序:Arry.sort()
写算法经常用到

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值