Java核心密卷知识点新整理1---4章节
对大多数同学来说在系统学习入门java基础知识以后依旧有很多 很多需要查缺补漏的地方,核心密卷这本书可以更好的进行基础的巩固和拓展,这本为第一卷 基础大多数都学过,将重要和易混的地方进行整理。
第一本较为基础可以用电子版,核心密卷2建议买书研究。
需要核心密卷1电子版的同学可以私信
一:最开始的当然是配置环境和安装java编译软件,本人用的idea比较好用(idea有试用期,购买较为昂贵,博主可以提供(免费)推荐,需要请私信)
二:Java的基本程序设计结构
——————————————以下为博客学习内容—————————————————
一:注释:
// 为单行注释
/* 注释内容 */ 多行注释
二:数据类型
常见的数据类型为 :
1.整型 : int (4字节)short(2字节) long(8字节) byte(1字节)
2.浮点:float(4字节) double(8字节)
3.NAN(不是一个数字)
4.char类型(要想弄清char类型, 就必须了解Unicode编码机制。 Unicode打破了传统字符编码机制的限制。 在Unicode出现之前, 已经有许多种不同的标准: 美国的 ASCII、 西欧语言中的
ISO 8859-1、 俄罗斯的KOI-8、 中国的GB1803 0和BIG-5等,现在主要用utf-8)
!!!字符集的转换在以后的工作中用到的地方很多,数据库写入和读 6.boolean类型,为false 和true 在应用判断语法和算法有着很大的作用
三:变量与常量
<1> 用数据类型定义一个变量,用来储存数据 ,可以进行更改
<2> 常量通常使用final指示常量,这里用的较少,大多较为生疏,使用代码来加深印象
final int a=1;System.out.println(a); //1a=2;System.out.println(a); //java: 无法为最终变量a分配值
在对变量a进行更改的时候会报错 java: 无法为最终变量a分配值
<3> 枚举类型 在后续章节统一整理
四:运算符
<1> 在Java中,使用算术运算符+、一、*、/表示加、减、乘、除运算。
( 当参与I运算的两个操作数都是整数时,表示整数除法;否则,表示浮点除法。 整数的求余操作(有时称为取模)用%表示。 例如,15/2等于7, 15%2等于1, 15.0/2等千7.5。)
<2> 注意double浮点溢出的问题和strctfp关键字,但是不属于大问题,知道存在即可 ,遇到了再进行系统的分类
<3> 数学函数与常量是非常重要i的,能够节省大量的计算和代码书写,具体的内容会再写一篇进行系统学习和笔记。
<4> 数值类型之间的转换:
图中有6个实线箭头, 表示无信息丢失的转换;另外有3个虚线箭头, 表示可能 有精度损失的转换。
注意:当用一个二元运算符连接两个值时(例如 n + f, n是整数, f是浮点数), 先要将两个操作 数转换为同一种类型, 然后再进行计算。
<5> 强制类型转换
强制转换方法有很多但都是大同小异,后续在进行统一整理笔记
<7> 自增与自减子
有基础的编程学习人员都会知道,分为++i 或者i++,减号同理,就不再细细描述。但是表达式中尽量不要使用自增和自减,容易让人混淆,还可能带来一些bug
<8> 关系和boolean运算符
在判断语句中经常使用 用true 和 false 来进行判断 表达式是否正确,并且很多方法的返回值为boolean类型,算法中也时常用到,详细了解可以事半功倍,
还有个最有用的(三元操作符) 这个操作符有时很有用。如果条件为true,下面的表达式
cond巾on ? expression1 : expression2
就为第一个表达式的值, 否则计算为第二个表达式的值。 例如, X < y ? X : y 就会返回x和y中较小的一个。
<9> 括号优先级 (比较重要)
五:字符串(非常重要)
<1> 子串
St ring类的substring方法可以从一个较大的字符串提取出一个子串。创建一个由字符 “Hel ” 组成的字符串六:输入输出 主要使用字符串中的substring方法
String greeting = "Hello";
String s = greeting.substring(0, 3);
<2> 拼接
与绝大多数编程语言一样可以同过拼接来构建新的字符串,在输出时经常配合汉语使用和表述答案
String expletive = "Expletive";
String PG13 = "deleted";
String message= expletive+ PG13;
如果需要把多个字符串放在一起,用一个界定符分隔, 可以使用静态join 方法:
String all= String.join("/", "S", "M", "L", "XL");
// all is the string "S / M / L / XL"
在Java 11中,还提供了一个 repeat方法:
String repeated = "Java". repeat (3); // repeated is "JavaJavaJava"
<3> 检测字符串是否相等
1. 判断方法一种是 “ equals”方法,还有一种是 “==” 两者之间存在差别equals 检测的是字符串是否相等, “==”检测地址是否相同,地址相同的字符串就相等了,比较字符串是否相同的时候用equalsla来进行比较。
(补充)2 要想检测两个字符串是否相等, 而不区分大小写, 可以使用equalslgnoreCase 方法。
<4> 空串与Null串 不做多的赘述
<5> 字符串API
<6>构建字符串
在构建字符串时,进行添加和删除操作非常繁琐和不方便,效率非常低,通过构建一个空的字符串构建器,使用StringBuilder类就可以避免这个问题发生:例如:
StringBuilder builder= new StringBuilde「();
//当每次需要添加一部分内容时,就调用append方法。
builder. append (ch) ; / / appends a single character
builder. append (str) ; //appends a string
(StringBuilder类前身时StringBuffer,效率稍微有一些低,视情况而用)
构建完成以后想要活得String类型的字符串可以通过调用同toString方法,可以将StringBuider转化为String类型,
String completedString = builder. toString () ;
以下整理了一下Stringbuilder()的方法
字符串相关笔记
String 构造方法:
public String() 创建一个空白字符串,不含有任何内容
public String(char[] chs) 根据字符组的内容,来创建字符串对象
public String(byte[] bys) 根据字节数组的内容,来创建字符串的对象
String s="abc" 直接赋值的方式创建字符串对象,内容就是abc
字符串比较:
s1.eauals(s2); "==" 指比地址 ,"equals" 比内容
public Char cahrAt(int index): 返回指定索引处的char值,字符串的索引也是从0开始的
public int length(); 返回此字符串的长度
字符串取出:
String line="abc"
line.cahrAt(int index): 此方法 可以单独取出 字符串中的单个元素:StringBuilder:StringBuilder sa=new StringBuilder();sa.append(""); 添加字符串
将 StringBuilder 转化为 StringStringBuilder a=new StringBuilder();a.append("asd");String b=a.toString();System.out.println(b); //asd
将 String 转化为 StringBuilder String s="fgh";StringBuilder ss=new StringBuilder(s);System.out.println(ss);
+StringBuilder() //构建一个容量为16的字符串构建器
+StringBuilder(capacity: int) //构建一个指定容量的字符串构建器
+StringBuilder(s: String) //构建一个指定字符的字符串构建器+append(data: char[]): StringBuilder //追加一个字符数组到字符串构建器
+append(data: char[],offset: int,len: int): StringBuilder//追加data中的子数组到字符串构建器
+append(v: aPrimitiveType): StringBuilder//将一个基本类型值作为字符串追加到字符串构建器中
+append(s: String): StringBuilder//追加一个字符串到字符串构建器
+delete(startIndex: int,endIndex: int): StringBuilder//删除从startIndex到endIndex-1的字符
+deleteCharAt(indexL int): StringBuilder//删除给定索引位置的字符
+insert(index:int,data: char[],offset: int,len:int): StringBuilder//在字符串构建器的给定索引位置插入数组data的子数组
+insert(offset: int,data: char[]): StringBuilder//向构建器偏移位置插入数据
+insert(offset: int,b:a: PrimitiveType): StringBuilder//向该字符串构建器插入一个转换为字符串的值
+replace(startIndex: int,endIndex: int,s: String): StringBuilder//将该构建器从startIndex到endIndex-1的位置的字符替换为给定的字符串
+reverse(): StringBuilder//倒置构建器中的字符
+setCharAt(index: int,ch: char): StringBuilder//将该构建器的指定索引位置设置为新的字符StringBuilder类提供了几个重载方法,可以将boolean、char、char数组、double、float、int、long和String类型值追加到字符串构建器。例如下面的代码将字符串和字符追加到stringBuilder,构成新的字符串"Welcome to Java"StringBuilder stringBuilder=new StringBuilder();
stringBuilder.append("Welcome");
stringBuilder.append(" ");
stringBuilder.append("to");
stringBuilder.append(" ");
stringBuilder.append("Java");StringBuilderl类也包括几个重载的方法,可以可以将boolean、char、char数组、double、float、int、long和String类型值追加到字符串构建器。stringBuilder.insert(11,"HTML and");
七:输入和输出
<1> 控制台的输出不多赘述
System.out.println();
<2> 通过控制台进行输入,首先需要构造一个与“标准输入流”System.in关联的Scanne对象,然后使用Scanner类的各种方法输入,nextLine方法为读取一输入
Scanner in = new Scanner(System.in);
String name = in. next Line (); //nextline方法将读取一行输入
String firstName = in. next(); //读取一个单词(以空白符作为分隔符)
int age = in. next!nt () ; //读取一个整数
<3>Scanner的输入是可见的,所以Scanner类不适用于从控制台读取密码,Console类来实现这个目的,可使用下列代码 !(读取的是一行)(返回的密码存在一个字符数组中,而不是字符串)
Console cons = System. console();
String username = cons. readline ("User name: ");
char[] passwd = cons.readPassword("Password: ");
八:控制流
<1>块作用域 : 指复合语句 用大括号括起来的语句,块请确定了变量的作用域,一个块可以嵌套在另一个块中
<2>条件语句 (基础知识 不多赘述)
<3>中断控制流程 的语句 break(退出循环语句) continue(退出当前循环)
九:大数
大数目前理解的就是 特别庞大的数字的运算法则,因为数字大 超过了传统的int,double,float de 的数值范围,所以使用大数,
<1> 如果基本的整数和浮点数精度不能够满足需求, 那么可以使用]ava.math包中两个很有用 的类: Biglnteger 和BigDecimal。这两个类可以处理包含任意长度数字序列的数值。Biglnteger 类实现任意精度的整数运算,BigDecimal实现任意精度的浮点数运算。
大数的运算法则写法和平常不太相似,整理出来供大家使用
例:
十:数组
<1>
<2> 数组拷贝: 将一个数组的所有值拷贝到一个新的数组中去, 就要使用 Arrays 类的 copyOf 方法
int[] 新数组 = Arrays.copyOf(被拷贝的数组, 新数组的长度);
int[] a={1,2,4,5};a[2]=3;int[] b= Arrays.copyOf(a,3);for (int i = 0; i <b.length; i++) {System.out.println(b[i]);// 1 2 3}
<3>命令行参数 (主函数接收到的命令也是一个数组,String[]就可以看出来 )书中说的很浅薄 ,没有说出具体操作实例 举个书中例子看
<4>数组排序
1. 对数值型的数组进行排序,可以使用Arrays类中的sort方法:
int[] a= {.......} ;
Arrays.sort(a);
2. 算法方面的排序方法 ,根据不同的题型有不同的方法,动态规划等
<4>多维数组
多维数组适用于表格等复杂的排列方式
double[][] balances= new double[NYEARS][NRATES]; //创建二维数组int[][] magicSquare ={16, 3, 2, 13},{5, 10, 11, 8},{9, 6, 7, 12},{4, 15, 14, 1} //直接创建二维数组
balances[i][j] //按照表格代表不同的二维数组中的数字
在java中没有多维数组这个概念 ,多维数组其实就是数组中的数组例如 int[] 中 int代表的就是数组中的数据类型,int[][] 就代表数组中有个数组类型
一些相关笔记
Java核心密卷知识点新整理1---4章节相关推荐
- Java类和对象知识点的整理
通过学习视频,特意写下此次博客.本次博客目的是为了理解面向对象的思想,掌握面向对象的基本原则以及 Java 面向对象编程基本实现原理,熟练使用封装.继承.多态面向对象三大特性.仅是博主本人总结,可能会 ...
- JAVA面试知识点个人整理
本文是一些JAVA面试的基本知识点个人整理,方便自己记忆回顾,摘自ThinkWon大神的系列文章JAVA面试题. 文章目录 静态内部类 == 和equal 参数传递 BIO,NIO,AIO File的 ...
- 北大青鸟java半年学费,Java核心知识点
开头 关于程序员,除了做项目.看视频来提高自身的技术之外,还有一种提升自己的专业技能就是:多!看!书!MySQL俨然已经成为了IT技术人员必须掌握的核心技能之一! <MySQL从入门到精通> ...
- 最全最新的的Java核心知识点整理!!! 【推荐】
前言: 想要文档版的小伙伴们可以私信我领取哦,更加清晰 一目了然 ~ Java核心知识点! 博客整理出来的稍微有点乱~ 目录 目录 -1 JVM - 19 2.1. 线程 - 20 2.2. JVM ...
- 超硬核,拒绝内卷全靠阿里大能整理的这份 Java 核心手册,堪称强无敌,谁来不说一声牛 AC
2022 年注定是不寻常的一年,在今年因为疫情以及各大大厂纷纷传来裁员的消息,引得整个互联网圈动荡不堪.腾讯裁员 30%.京东.百度.字节等大厂都在纷纷裁员,引的这些中厂和小厂也跟风裁员. 这个时候外 ...
- 牛逼了!8000页Java 核心知识点+面试题整理,超全!
今年金九银十要来了,很多小伙伴都在准备跳槽.小编为大家汇总了份Java核心知识点面试题和答案,基本上涵盖了所有后端技术栈,相信可以帮助大家拿到自己心仪的offer. 截了几张图,大家可以仔细查看左边的 ...
- 阿里P8整理总结,入职大厂必备Java核心知识(附加面试题
前言 今天就给大家分享一波一位小伙伴面试大厂的经历.知识点和面试题分享,主要内容包括:JVM.JAVA集合.JAVA多线程并发.JAVA基础.Spring原理.微服务.Netty与RPC.网络.日志. ...
- 架构师花费近一年时间整理出来的Java核心知识,直击优秀开源框架灵魂
前言 前段时间从蚂蚁金服二面回来,有些许面试新的给大家分享. 毕业至今两年一直在A金融公司做Java开发,在一个公司时间长了我也想换个环境,于是在网上投了简历,选择公司我的目标很明确还是金融领域,最好 ...
- Java核心知识点 --- 线程中如何创建锁和使用锁 Lock , 设计一个缓存系统
理论知识很枯燥,但这些都是基本功,学完可能会忘,但等用的时候,会发觉之前的学习是非常有意义的,学习线程就是这样子的. 1.如何创建锁? Lock lock = new ReentrantLock(); ...
最新文章
- Docker创建自己的github(Gitea)
- 《Deep Learning With Python second edition》英文版读书笔记:第十一章DL for text: NLP、Transformer、Seq2Seq
- 20155226 2016-2017-2 《Java程序设计》第一周学习总结
- 如何让光标处于EditText的末尾
- Nginx静态资源优化配置之tcp_nopush和tcp_nodelay
- 阿里云服务器新手安装nginx
- 如何使用 SAP API Portal Policy Editor 给 SAP API 调用自动添加认证信息
- Java Spring log源代码学习
- 欧拉函数 cojs 2181. 打表
- Python 37 进程池与线程池 、 协程
- 别小看无人配送,长大了就是自动驾驶的最终实现。
- 整数的素因数权重分析
- Windows Server 2012安装 .NET Framework 3.5
- 软件自动化测试题,软件自动化测试模拟题.doc
- 流(stream)是怎么一回事
- aix linux tcp连接数,修改windows、linux、aix等系统TCP/IP 参数
- Matlab多种群遗传算法
- 用C 程序理解汉字的机内码表示
- 云端虚拟化技术的应用
- Oracle安装时先决条件检测失败
热门文章
- 凸多边形面积的最短平分线
- ESP8266 修复刷完nodemcu固件后无法连接wifi网络的故障
- Python-scapy(白帽)[ARP无法欺骗手机吗][DNS欺骗不了https吗]
- web基础(html的基本知识)
- c++类内的static变量初始化和static函数
- cad怎么输出为pdf?这个办法不妨试试
- 通过Xcode 10链接libstdc++来深入分析tbd文件
- Android音乐设计论文,基于安卓Android的音乐播放的设计与实现
- Opengl ES 1.x NDK实例开发之八:旋转的纹理金字塔
- spring中的Aware接口的作用以及代码剖析