没有合适的资源?快使用搜索试试~ 我知道了~
JavaSE基础知识
资源推荐
资源详情
资源评论
一.Java入门
1.关于CMD常见命令
盘符切换:盘符名称+冒号 查看当前路径的内容:dir 进入目录:cd 目录 回退上一级目录:cd .. 进入
多级目录:cd 目录1\目录2 回退到盘符目录:cd \ 清屏:cls 推出cmd:exit
2.环境变量
想要在任何目录下都可以打开指定软件,就可以把软件的路径配置到环境变量里
3.JDK里的目录 JDK分为过渡版本和长期支持版本(LTS)
bin:该路径下存放了各种工具 conf:该路径下存放了相关配置文件 include:该路径下存放了一些平
台特定的头文件
jmods:该路径下存放了各种模块 legal:该路径下存放了个模块的授权文件 lib:该路径下存放了工
具的一些补充jar包
4.JAVA
JavaSE:Java语言的(标准版),用于桌面应用的开发,是其他两个版本的基础
JavaME:Java语言的(小型版),用于嵌入式电子设备或者小型移动设备,列入电视剧 微波炉等,以凉
JavaEE:Java语言的(企业版),用于web方向的网站开发
Java的主要特性:面向对象() 安全性 多线程(同时做多件事) 简单易用 开源(代码公开) 跨平台(通过虚拟
机实现)
5.JDK和JRE
JVM(Java Virtual Machine):Java虚拟机,真正运行Java程序的地方
JRE(Java Runtime Environment):Java的运行环境,包括:JVM、核心类库、运行工具
JDK(Java Development Kit):Java开发工具包,包括:JVM、核心类库(Java写好的东西,可以直接
用)、开发工具[ javac(编译),java(运行),jdb(调试)]
Java编译成class文件,然后在虚拟机上运行,就不需要再开发,所以JDK里面一些工具可以不需要,
为了节省空间所以就有了JRE
包含关系:JDK包含JRE、JRE包含JVM
二.Java基础概念
1.注释 //是单行注释 /* */是多行注释 /** */是文档注释
2.关键字 被Java赋予了特定含义的英语单词
关键字特点:关键字的字母都是小写、在常见编译器中有不同的颜色标记
3.字面量 告诉程序员数据在程序中的书写格式
字面量类型:整数 小数 字符串(" ") 字符(' ') 布尔 空(null不能直接打印,要用字符串的形式进行打印)
特殊字面量:' '(制表符,在打印的时候,把前面字符串的长度补齐到8,或者是8的倍数。最少补1个
空格,最多补8个空格)
4.计算机的存储规则
文本(数字、字母、汉字)均以二进制存储,字母和汉字对应各码表里的值再转化为二进制,存在电
脑里,不同进制在代码中的表现
二进制:由0和1组成,代码中以0b开头 十进制:0~9,不加任何前缀
八进制:由0~7组成,代码中以0开头 十六进制:由0~9还有a~f组成,代码中以0x开头
(用二进制的由来,以前计算机看图灵纸孔,无孔1有孔0,现在计算机看电压大小,大于3.3v的为1,
小于为0,这样只用表示两个状态,轻松些)
image图片,采用光学三原色存储(红,绿,蓝),可以写成十进制或者十六进制表达式
(255,255,255) (FFFFFF),每个像素就是一块三原色组合
sound声音,对应波形图,波形图每一个点有一个数字对应
5.数据类型 分基本数据类型和引用数据类型
基本数据类型
如果要定义一个long类型的变量,要在数据值的后面加上一个L作为后缀,L可以大写或小写,建议大
写,float要加F做后缀。运算时,若可能溢出,建议在第一个数后加L。(Biginteger类型 存数大小没有
限制)。浮点类型不能精确表示数据,运算时有可能会发生舍入误差,精确场合不能用。(BigDecimal
类型 用于存小数,基本上没有误差)。char采用Unicode编码格式,一个字符对应一个码,表现的形式
是字符char,但本质是码int(ASCII a=97 A=65 0=48)
整数和小数的取值范围大小关系:double>float>long>int>short>byte。
6.标识符
命名规则:由字母、数字、下划线、美元符号($)组成,不能数字开头,不能是关键字,区分大小写
7.输入基本类型数据
用Scanner类创建一个对象 Scanner reader=new Sacanner(System.in);
然后reader对象就可以调用下列方法,读取用户在命令行输入的各种基本类型数据:
第一套体系:nextByte()、nextShort()、nextInt()、nextLong()、nextFloat()、nextDouble()、
nextBoolean()、next() 遇到空格,制表符,回车就停止接受。这些符号后面的数据就不会接受了
第二套体系: nextLine();接收字符串 可以接收空格,制表符,遇到回车才停止接受数据
键盘录入的两套体系不能混用的 弊端:先用nextInt,再用nextLine会导致下面的nextLine接受不到数
据
三.运算符和表达式
对字面量或者变量进行操作的符号 用运算符把字面量或变量连接起来符合Java语法的句子称为表达式
1.算术运算符(+ - * / %)
在代码中,如果由小数参与计算,结果有可能不准确 (之后补充为什么有这种现象)。
(1) “+”操作的三种情况(数字相加、字符串相加、字符相加)
①数字相加:
数字进行运算时,数据类型不一样不能运算,需要转成一样的,才能运算 (强制类型转换或者隐式类型
转换)
隐式类型转换:小类型传给大类型(本质就是在要转换的数的二进制数前补上相应的0。例如byte的10
二进制为0000 1010转为short型就为 0000 0000 0000 1010)。byte short char三种类型的数据在
运算的时候,都会直接先提升为int,然后在进行运算。例如:byte a=10;byte b=20 byte c=(byte)
(a+b) a,b的类型被转为int型 所以要强转为byte 不然就报错
强制类型转换:大传小(本质就是删去0)。标数据类型 变量名=(目标数据类型) 被强转的的数据
②字符串相加:
当"+"操作中出现字符串时,这个"+"是宇符串连接符,而不是算术运算符了。会将前后的数据进行拼
接,井产生一个新的字符串
连续进行“+”操作时,从左到右逐个进行。例如:1+99+“np”+20+30 输入的是
“100np2030”
③字符相加:当字符进行“+”操作时,会先通过ASCII码表查询对应的数字再进行计算
注意看是单引号还是双引号
(2)“-” “*” “/” “%”没啥,字符串只有“+”操作 2.自增自减运算符("++" "--")
3.赋值运算符("=、+=、-=、*=、/=、%=" ):+=、-=、*=、/=、%= 底层都隐藏了一个强制类型
转换。例如:short s=1; s+=1;等于s=(short)(s+1);
4.关系/比较运算符("==、!=、>、>=、<、<="):结果都是Boolean型,要么true,要么false 5.逻
辑运算符("& | ^ ! && ||")
6.三元运算符(? :):关系表达式?表达式:表达式;
7.运算符优先级:
8.原码、反码、补码:-128无原码和反码,只有补码为1000000(补码还能多记录一个特殊的
值-128,因为补码是相当于错位来放反码的,-127为10000001,然后多出来的10000000就被定义
为-128,所以我们说一个字节的取值范围为-128到127)。计算机中的存储和计算都是以补码的形式
进行的
9.位运算符(“&逻辑与 |逻辑或 <<左移,低位补0 >>右移,高位补0或1 >>>无符号右移,高位补0”):
左移几次相当于一个数乘以2的n次方。列如:200左移两次等于200*2^2=800。右移就是除法
四.判断和循环
流程控制语句(顺序结构、分支结构、循环结构)
①.分支语句(if、switch):if注意点如果对一个boolean类型进行判断,不要用==号,直接把变量写在
小括号里
switch注意点:default的位置不一定是写在最下面的,我们也可以写在任意位置,只不过习惯会写在最下
面,写在别的位置时,要加上break;case穿透就是句子中没有break导致的,如果多个case语句的语句
体重复了,就可以用; switch新特性,只有jdk12及以后版本才有:case 条件,条件 -> {},这个可以
不用加break;switch括号内只能支持byte,short,int,char,String(jdk7),枚举(jdk5)
②.循环语句(for、while、do...while)
循环高级综合练习(无限循环、跳转控制语句):无限循环就是死循环for(;;)、while(true)、
do...while(true);跳转控制语句:continue、break;
若循环中if语句中有break就是跳出循环,switch中有break是跳出switch
嵌套循环:一般多行多列使用,常常外层控制行,内层控制列;建议:嵌套层数越少越好,一般只用
到两层,三层及少
五.数组
数组:引用数据类型,是一种容器,可以用来储存同种数据类型的多个值,定义了长度就不可变
1.数据的初始化
①静态初始化:
完整格式:数据类型[] 数组名=new 数据类型[]{元素1,元素2,元素3}; 简化格式:数据类型[] 数组名=
{元素1,元素2,元素3};
②动态初始化:
格式:数据类型[] 数组名=new 数据类型[数组长度];
数组名记载的是堆空间的地址值,所以输出数组名的时候输出的地址值
2.数组的内存图
只要是new出来的一定是在堆里面开辟了一个小空间,如果new了多次,那么在堆里面有多个小空
间,每个小空间中都有各自的数据
两个数组指向同一个空间的内存图:
当两个数组指向同一个小空间时,其中一个数组对小空间中的值发生了改变,那么其他数组再次访问
的时候都是修改之后的结果了
扩展:解释一下地址值的格式含义例如:[D@776ec8df
[:表示当前是一个数组 D:表示当前数组里面的元素都是double类型的 @:表示一个间隔符号(固定
格式) 776ec8df:数组真正的地址值
扩展:idea提供的自动的快速生成数组的遍历方法=数据名.fori;快速生成主函数=m;快速生成输出
=sout;CTRL+Alt+L自动格式化代码;CTRL+Alt+M自动生成方法;CTRL+Shift+/ 快速注释 ;
alt+insert快速生成标准Javabean;先选中要生成循环或处理异常的代码,然后Ctrl+Alt+T快速生成
处理的方式
扩展:数组默认初始化的规律:整数类型的默认初始化为0;小数类型的默认初始化为0.0;字符类型
的默认初始化为'/u0000' 空格;boolean类型的默认初始化为false;引用数据类型的默认初始化为
null;
3.数组的复制(java提供的)
方法(①更灵活) 输出b:0001234000
方法②(更简单)输出b:123
方法②的衍生——数组的扩容(创建一个更大的新的数组,并将源数组数据复制进去)
4.数组的排序 5.Arrays.toString()将数组转换为字符串输出
六.二维数组
当我们需要把数据分组管理的时候,就需要用到二维数组
1.二维数据的初始化
①静态初始化
完整格式:数据类型[][] 数组名=new 数据类型[][]{{元素1,元素2,元素3},{元素1,元素2,元素3}}; 简化格
式:数据类型[][] 数组名={{元素1,元素2,元素3},{元素1,元素2,元素3}};
②动态初始化:
数据类型[][] 数组名=new 数据类型[一维数组个数][一维数组中可以放多少个元素];
2.获取元素
arr[i][j]——arr: 二维数组 i: 二维数组的索引,获取出来的是里面的一维数组 j: 表示一维数组中的索
引,获取出来的就是真正的元素
System.out.printIn(arr[0]);表示获取二维数组中的第一个一维数组(输出的是地址值)
System.out.printIn(arr[0][0]);表示获取第一个一维数组中0索引的元素
3.二维数组的遍历
for (int i = 0; i < arr.length; i++) { 外循环:遍历二维数组,得到里面的每一个一维数组
for (int j = 0; j < arr[i].length; j++) { 内循环:遍历一维数组,得到里面的每一个元素 } }
4.二维数组的内存图
特殊情况二:当arr[1]=arr2;赋值完后,二维数组自动创建的0022和0033就会变为垃圾从内存消失
七.方法
封装一段特定的业务逻辑功能,可以重复利用,方法是程序中最小的执行单元,方法提高代码的可维
护性,减少代码重复
1.方法的格式
修饰词 返回值类型 方法名(参数){方法体; return 返回值 } 只要到return就是直接结束方法
有参可以使方法更灵活
形参:形式参数,是指方法定义中的参数 实参:实际参数,方法调用中的参数
2.方法的重载
同一个类中(继承的子类中写也算),方法名相同,参数不同(包括:个数不同、类型不同、顺序不
同)的方法。与返回值无关。
①在调用重载方法时,Java虚拟机会通过参数的不同来区分同名的方法
②把相同功能的方法名起成一样的名字——好处:定义方法时不用那么多单词了,调用方法时也不用
这么麻烦
3.方法的内存
Java的内存分配(虚拟机)
剩余21页未读,继续阅读
资源评论
一只小白啊啊
- 粉丝: 1
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功