# 学习java的背景
学习Java可以有助于提升自己编程能力,了解代码运行的过程和原理,学习过c语和c++的可以很好的了解java,这几种语言是相通的。
学习Java不可避免的要谈到Java背后的计算机和计算机语言的发展历史,但这不是重点所以按下不表。
## 编程中会用到的快捷键
这里选取几个个人感觉有用的结果快捷键命令:1.alt+F4窗口关闭命令 2.ctrl+A 全选 ctrl+C复制 ctrl+V粘贴 ctrl+V剪贴 ctrl+Z撤销 ctrl+S保存 win+r键 打开控制面板 win+e键打开我的电脑
### Dos命令
要进行Dos界面的命令需要先打开CMD
Dos命令
#### JDK与IDEA
学习Java就要要求系统配有Java语言的编译的环境和工具包,IDEA是不错的java语言集成编译环境
以下是IDEA的下载地址 JetBrains: Essential tools for software developers and teamshttps://www.jetbrains.com/
##### java运行的机制
1.编译型
可以简单理解为全局编译
2.解释型
可以简单理解为实时更新
以上两种是Java运行的两种机制,二者各有优缺点,这里暂时按下不表。
######## 注释---书写注释是良好的编程习惯
单行注释 //
多行注释 /*内
容 */
文档注释 /** @author
*/
########## Java的数据类型
long类型的在后面加L
float类型的在后面加F
在char关键字时使用只能使用一个字符,而string是字符串可以使用多个字符,且string不是关键字。
在使用数值进行比较时最好避免使用float类型数据,因为float类型具有有舍入误差的性质。
几种进制在Java中的表示
二进制0b
十进制 无特殊表示
八进制 0
十六进制 0x
有数据类型就会有类型转换,以下介绍类型转换
java运算中将不同类型转换为同一类型时,优先转换为更高一级的类型,这一现象称为’‘向上转换’‘
强制转换(由低等级到高等级转换)
自动转换(高等级到低等级转换)
强制转换的实质所有的字符本质还是数字
注意:1.不能对布尔型的值进行转换2.不能对两种数据类型的值进行转换(可以参考注意点1)3.强制转换时可能存在数据溢出。
在数据较大时可以使用下划线进行分割
位运算主要是对二进制的每一位进行运算的运算符
位运算有以下几种:&(与)、|(或)、^(异或)、~(取反)、<<(左移)、>>(右移)、>>>(无符号右移)
在c语言中0为假非0为真。
1.&(与)运算时都为0时表示都为假则结果仍然为0。0和1时有一个为假则结果仍未0,;两个都为1时则结果为1,以此类推,|(或)运算符的结果也可推算出来。
2.^(异或)运算符规则时如果运算对象相同位置的数字相同则为0否则就为1。
3.~(取反)运算符就是去运算对象的另一个数,即0就取1,1就取0。
实例:
a=0011 0011
b=0110 1001
a&b=0010 0001
a|b=0111 1011
a^b=0101 1010
~a=1100 1100
1.<<(左移)相当于将二进制数整体想左以,溢出的直接舍掉,空缺的用0补齐,左移n下表示乘2n。
2.>>(右移)相当于将二进制数整体想右移,溢出直接舍掉,因为二进制开头0表正数1表负数,所以当运算对象时正数时用0补齐,为负数时用1补齐,右移n下表示除以2n。
3.>>>(无符号右移)相当于在右移的基础上忽略正负的区别,一律用0补齐
Java的关键字和标识符
关键字
############ 变量、常量、作用域
示例
类变量
类似于c中全局变量
常量(constant)
常量即初始化后不会再改变的值
可以理解为一种特殊变量,它的值设定后,在程序执行中不允许改变
示例
final 常量值=值
final double PI=3.14
常量一般大写
变量的命名规范
############### Java语法
1.package包的使用
类似文件夹,Java代码的存储和集中处理就可以放到包中方便管理。
包的语法格式时:package 包名;
如:package animals
包的命名规则:
1.包名全部用小写
2.如果包名有多个层次用 “.” 来分割
3.包名一般是倒置的域名,如www.baidu.com写成包的话就是com.baidu.www
4.自定义包不能·用java开头
一般使用import来导入某个包的类,
语法格式:import+包名+类名
如:import example.Text(用于导入包的指定类,例如这就是导入Text类)
import example,*(用于导入包的所有类)
2.Scanner的使用
scanner是Java中的一个工具类,我们可以通过scanner类来获取用户的输入
if选择结构
if(Boolean){
语句
//布尔表达式为true则执行
}
switch选择结构
switch(表达式){
case 常量1:
语句1
case 常量2:
语句2
break;
case 常量3:
语句3
default:
语句4
}
while循环结构
while(布尔表达式){
语句
//如果布尔值为true则执行
}
do while 循环结构
do{
语句
}while(布尔表达式);
注意do while 语句和while语句的区别
do while 先执行后判断
while 先判断后执行
for循环
语法:
for(初始化;布尔表达式;更新){
语句
}
加强for循环
加for循环是专门用来遍历数组和集合的
语法:
for(元素数据类型 变量:Collection集合或数组){
语句
}
break continue goto
break:break一般用于循环体中 ,可以控制循环的流程,当执行到break是会直接跳出循环,不执行下面的语句
continue:continue与break用法相似,但和break的区别是break直接跳出来循环,不执行之后的语句了,而continue则不同,它也会跳出循环,但它只是跳出来本次循环,它之后是仍然会执行这个循环的。
goto:可以简单理解为标签,在循环需要时跳到标签标志处。
Debug*:在程序的某一段运行停下,输出停下那段的结果。用来对程序进行调试,可以检查程序执行流程或追踪程序执行过程。
数组
数组的定义:
数组就是一个相同类型的有序集合,数组中的每一个元素称为数组元素,一个数组的数组元素类型一定是相同的,并且数组的排序一定也是有先后顺序的,每一个数组元素都可以通过下标来访问它们,数组也是个对象。
数组的声明:
数组的声明有两种形式
(1)数组类型 数组名 [ ] (c语言书写习惯)
(2)数组类型 [ ] 数组名 (Java书写习惯)
数组的创建:
数组类型 [ ] 数组名 = {em1,em2,em3,…,emN};(声明数组时初始化)
数组类型[ ] 数组名 = new 数组类型[ ] (new关键字声明数组的同时初始化)
数组类型[ ] 数组名 = new 数组类型[N ] (new关键字声明数组时指定数组长度)
注意:数组声明之后长度不可改变,改变的可以是里面的数组元素,获取数组长度arrys.length,
数组未被赋值时,默认值为0。
数组边界问题:
数组的下标是从0开始的,所以他的下标区间是0~length-1,下标不能够越界,越界会报错
二维数组
二维数组就是一维数组的每一个数组元素都是一个一维数组,相当于是数组的数组
二位维数组的声明
数组类型 [ ][ ]数组名
Arrays类
arrys类主要存在于java.util包中,包含数组的各种方法。使用时导包:import java.util.Arrays
方法定义
方法是语句的集合,用于实现某种功能,它包含在对象或着类中,方法先被创建,而后在其它地方被调用,类似与c和c++中的函数。
面向对象
面向对象就是将一件要做的事情先分类,然后再每一个类下面再具体去实现,从而达到完成这件事的目的。
面向对象和面向过程的区别是面向过程没有这个分类的阶段,直接开始做。
面向对象的特性:封装、继承、多态
类与对象的创建
类就是具有共同属性对象的集合,对象是类的具体实例
创建和初始化对象
(1)使用new关键字来创建对象。
(2)在使用new关键字创建的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中的构造器的调用。
封装
封装就是将类的属性与方法隐藏起来,不会被直接找到,一般会用private来修饰它,他的使用范围在同一个包的同一个类中使用,一般如果需要调用封装好的函数需要通过get和set来实现,set是给属性赋值的,get是取得属性值的。
继承
继承就是子类继承父类的特征和行为,使得子类获得父类的实例或方法,继承一般用关键字extands,继承的是子类,被继承的是父类,Java中只有单继承没有多继承。
多态
多态就是同一间行为通过不同的事物可以表现出不同的形态
多态存在的前提
(1)存在继承或者实现关系
(2)子类或实现类必须重写父类方法
(3)父类引用指向子类对象
super与重写
super
super 关键字可以在子类的构造方法中显式地调用父类的构造方法,基本格式如下:
super(parameter-list);
重写
子类在继承父类之后可以对父类中同名同参数的方法,进行覆盖操作。
子类中的叫重写方法,父类中的叫被重写方法。
抽象类与内部类
顾名思义内部类就是在其它方法和其它类内部定义的类
作用:实现类的重用功能,实现多重继承,增强封装
抽象类
用abstract修饰的类就叫抽象类,抽象类无法实例化,不能直接使用new关键字来生成对象
接口
有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java不支持多重继承。有了接口,就可以得到多重继承的效果,接口是抽象方法和常量值的定义的集合
异常
异常是在程序执行期间发生的事件,中断正在执行的程序的正常指令流。
Error 是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。
处理异常的机制
抛出异常和捕获异常
java异常处理的方式:
方式一: try-catch-finally(捕获)
方式二: throws + 异常类型(抛出)
异常处理关键字:try、catch、finally、throw、throws
########################## 总结
1.学习中,要养成良好的习惯(写括号时要成对,字母大小写要区分,单词拼写要准确)。
2.在学习的过程中,最好不是仅仅停留在java表层,不是抄书上的例子运行出结果就可以。要注意,即便对一个简单的例子也要有耐心去琢磨、调试、改动。
3.在学习的过程中一定要动手做、试着写代码,而不是抱一本书看看就行。很多东西和体会必须自己动手才能真正属于自己。
4. 在 Java 的学习过程中,可能会遇到形形色色的问题不容易解决,应多去专业论坛了解相关的知识,书本上的知识有限。要会从网上搜索有用的信息 加以整理,促进学习的深入和知识水平的提高。
看了好多网上课程,说学到一定程度要尝试着自己做东西,但觉得自己仅仅经过一学期的学习,还远远不够,希望自己在以后学习中继续努力,能够真真正正拥有一门编程语言,对自己今后的发展起
到作用。在学习java语言的同时,也让我学会了如何来发现问题,如何解决问题,怎样有效的学习等等,相信会对我一生都有用
############################