第一章基本内容
①java的发展史:
1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言。希望用于控制嵌入在有线电视交换盒、PDA等的微处理器
1994年将Oak语言更名为Java
1998年JDK1.2时,更名为Java 2 Platform
分为标准版J2SE,企业版J2EE,微型版J2ME
②java体系特点:java分为3种:
javaSE:开发桌面应用,如qq,wps
javaEE:主要用于企业开发
javaME:用于移动端的开发
③java特性:一种面向对象的编程语言、安全性高(主要表现在内存回收机制,强制类型检查、取消指针),具有健壮性(鲁棒性),与平台无关的语言
④JVM:jvm是一个可以运行字节码文件(由java源程序编译产生)的虚拟机进程
(面试时可以说:JVM可以理解为是一个可运行java字节码文件的虚拟计算机系统,有一个解释器组件可以实现Java字节码和操作系统之间的通信,同时,不同的运行平台,jvm也是不一样的)
⑤GC:垃圾回收器,是在java程序运行过程时自动启用
⑥JDK与JRE:JDK= JRE+java开发工具,JRE=JVM+类基础库
⑦环境变量:由于在进行某些命令时要到该目录下去进行不方便,因此为了便于在任何目录下都可以运行该应用,所以需要设置环境变量
⑧代码分类:1.结构定义语句(结构定义语句就是类似于将分支结构,循环结构等)2.功能执行语句(功能执行语句就相当于将所有代码汇总之后的输出,最后必须加分号)
pg:①java整个运行的进程为:
Java源文件 -->编译 -->产生java字节码文件 -->(类装载器进行字节码的验证) --> jvm运行字节码 --> 传给操作系统 --> 硬件
②为什么要用%JAVA_HOME%:在进行项目时如果要用到两种java环境如jdk11或者jdk8此时在更改环境变量时有可能会出错,用这个更加保险
③JAVA API 实际上就是类对应的方法或者叫接口里面的方法
第二章基本内容
①数据类型:引用数据类型,基本数据类型
②变量:
局部变量:方法或语句块内部定义的变量
成员变量:方法外部,类的内部定义的变量
数据类型:八个:byte(1) boolean(2) short(2) int(4) long(8) float(4) double(8) char(2)
③
- long变量定义:变量long在计算机上占8个字节,同时在输入一个整数时系统会默认为int,因此如果过大时应该在后面加L
- float变量定义:占4个字节,定义float变量时系统会默认是double类型,因此就也是需要在后面加F
④数据类型转换
一、自动类型转换:
低精度–>高精度:byte,short,int–>float–>long–>double
二、强制类型转换(容量大的转化为容量小的,要加上强制转换符)
高精度–>低精度:long l = 100L,int i = (int)l
⑤方法:权限修饰符 (在编写的时候由于static的关系,只能在这儿加上一个static使得两者之间都属于静态关系) 返回值类型声明(若不需要声明则用void) 方法名称(参数列表){
return (内容)}
eg:
public (static) (void:可以是其他的只是当没有数据类型时用void) say(){return ()}
权限修饰符有四个:public protected default private :
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xxW1OBBd-1603975633412)(C:\Users\刘元汉\AppData\Local\Temp\1602318357173.png)]
⑥编程规范:详情在课件中(C:\Users\刘元汉\Desktop\java\课件与笔记\文档)
一:类名首字母大写,变量名全部小写,方法名首字母小写其他首字母大写
⑦转义字符:\可以将符号转化为无特殊含义的内容(如char = ‘\’,此时\会被输出不会报错,其他同理)(小贴士:\t不是空格符二是制表符(制表符就是一个tab占一个单元格))
⑧接受用户输入:使用Scanner类,(Scanner input = new Scanner(System.in))
其中加System.in的原因是扫描系统的输入,同时在获取对象时eg:返回值类型 对象 = input.next()
这其中的next可变,但要注意next和nextline的区别在于前者在控制台输入空格时只会输出空格以前的,而后者则全部都可以输出,
ps:实际上获取对象返回值类型 对象 = input.next()
的这个才是真正的输入位置,在用到while循环的时候需要注意
⑨执行结构:分为三种:
顺序结构:按照语句出现的顺序执行
分支结构:又叫选择结构(如if,swich)
循环结构:在某一个限定条件下进行重复该结构直到到达限定条件
⑩while循环: while(条件表达式){ }
条件表达使就是一个可以判断真假的式子
do while循环:do{}while(条件表达式)
do while循环和while的循环区别在于:
do while 循环在进行的时候会先进行循环体再判断
while循环一开始就会判断条件,此时就如果不符合条件的话循环体就不会执行
**11、**for循环:for(定义循环变量;判断循环条件;更新循环变量){}
注意:for循环在执行的时候除了第一次回用到定义的循环变量之外其他时候使直接判断循环条件再更新再判断
注意二:在不确定次数的情况下不要用for循环,应该用while循环
**12、**内嵌循环:
for(;;){
for(;;){
}
}:外层循环控制行数,内层循环控制列数
**13、**判断用户的输入类型:
在进行输入时,我们应该按照交付标准来规范代码,此时,我们应该用到如下的方式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4hvfppUH-1603975633415)(C:\Users\刘元汉\Desktop\java\笔记\java基础.assets\不判断数据类型产生的错误.png)]
此时是错误的,我们应该添加一个测试的方式来使程序不崩溃
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z9Q7L6u9-1603975633418)(C:\Users\刘元汉\Desktop\java\笔记\java基础.assets\判断数据类型.png)]
将原来单独的一个输出转化为一个if语句从而使程序稳定,其中用到的是**input.hasNextInt()**这个返回的是一个Boolean类型
14. 能整除4不能整除100的为闰年或者能整除400的为闰年
随
记
:
一
个
用
于
幂
运
算
的
方
法
是
M
a
t
h
.
p
o
w
(
d
o
u
b
l
e
a
,
d
o
u
b
l
e
b
)
随记:一个用于幂运算的方法是Math.pow(double a,doubleb)
随记:一个用于幂运算的方法是Math.pow(doublea,doubleb)
15. 数组:不常用数组:
①int[] ages = new int[]{11,31,12};(一般来说这样写没有直接写数组来得舒服,即new int[]是可以去掉的)
②int[] nums;(只定义但是并没有太大用处)
16. 冒泡排序:假设有n个数,把第1,2数比较2,3比较…n-1,n比较,把较大放右边较小放左边(从小到大排序时),此时首先进行了n-1次比较,但是这只是第一轮,因此,再进行第2轮,3,4…i每一轮实际上进行的是n-i (注意这个i实际上就是第i轮,因此当i = 0时要-1才可以)这个轮数是多少呢,实际上也是n-1次(外层循环控制轮数,内层循环控制每轮比较的次数,而且这个n实际上就是length也就是数组长度),同时排序的时候实际上最后比较的是第一个和第二个数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kqx39dNN-1603975633420)(C:\Users\刘元汉\Desktop\java\笔记\java基础.assets\冒泡排序法.png)]
17. 二分查找:首先查找的数组中的元素值必须是按照顺序来的
方法:①定义一个查找的变量②定义最大,最小,中间下标③将中间下标对应的数组元素和要寻找的值进行比较,如果对应数组元素大,则最大下标=中间下标-1,反之则最小下标 = 中间下标加一(这里就是建立循环,注意更新中间下标)④最终的中间下标和寻找的值相等时即可输出(如果最小下标大于最大下标,此时代表元素不存在)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wx6I8qBc-1603975633422)(C:\Users\刘元汉\Desktop\java\笔记\java基础.assets\1602465042742.png)]
17. 求数组最大值:我们不能拿数组里的两个数两个数得进行比较这样的比较如果第一个是最大,根本比不了因为没有把所有值比完
正确的方法是我们应该定义一个变量,给这个变量赋值并将这个值与所有的值进行比较,把最大的赋值给这个变量,此时这个变量的值才会是最大的值,最小值同理
求数组中的最大值的时候实际上就是for循环然后用三元运算符将初始的变量值和数组中的每一个值进行比较,最终得到最大或最小值
18.在打印数组nums的时候只能用循环遍历,因为nums是一个对象,它被保存在内存中,如果读取num的话,读取的只会是nums这个对象在内存中的地址
19. 补码:正数的补码就是该数的原码,负数的补码就是先绝对值再按位取反加一
20. 在进行用户选择时我们可以使用switch语句来进行功能的实现,这样不会显得特别繁琐,而且也十分美观统一;同时switch中的break语句只是终止switch并不会终止循环,所以不需要continue
中的地址