一.java语言基本数据类型
整数类型
用来存放整数
byte,short,int,long
浮点类型
分为单精度和双精度
float,double
字符型
用来存放字符类。特殊字符\\(转义字符),输出‘\’字符和‘☆’字符
布尔类型
又称逻辑类型,通过关键词boolean来定义布尔类型变量。布尔类型只有true和false两个值,分别代表布尔逻辑中的“真”和“假”。
二.变量与常量
标识符和关键字
1.标识符的概念
标识符可以简单地理解为一个名字,用来标识类名,变量名,方法名,数组名,文件名的有效字符序列。
标识字符由任何顺序的字母,下画线(_),美元符号($)和数字组成,并且第一个字符不能是数字,避开关键字。
2.关键词
关键字又称保留字,是java语言中已经被赋予特点意义的一些单词,不可以把这些单词作为标识符来使用
声明变量
声明变量就是要告诉编译器这个变量的数据类型,这样编译器才知道需要给多少空间给它,以及它能存放什么样的数据。
声明常量
final 数据类型 常量名称[= 值]
变量的有效范围
成员变量
成员变量在整个类都有效。
局部变量
局部变量只能在当前代码块中有效,也就是只有在“{”与“}”之间使用
三.运算符
1.赋值运算符
赋值运算符以符号“=”表示,它是一个二元运算符(对两个操作数作处理),其功能是将右方操作的值赋值给左方的操作数。
一个表达式中若有两个以上的“=”运算符,会从最右边的“=”开始处理。
2.算术运算符
java中的算术运算符主要有+(加),-(减),*(乘),/(除),%(求余),它们都是二元运算符。
3.自增和自减运算符
自增,自减运算符是单目运算符,可以放在操作元之前,也可以放在操作元之后。操作元必须是一个整型或浮点型变量。自增和自减运算符的作用是使变量的值增1或减1。放在操作元前面的自增,自减运算符,会先使变量参与表达式的运算,然后再将该变量加1(减1)。
符号在前,先运算再使用,符号在后,先使用再运算。
4.比较运算符
比较运算符属于二元运算符,用于程序中的变量之间,变量和自变量之间以及其他的信息之间的比较。比较运算符的运算结果是boolean型。当运算符对应的关系成立时,运算结果为true,否则为false。所有比较运算符通常作为判断的依据用在条件语言中,比较运算符有6个。
5.逻辑运算符
&& 两者都为真,结果才为真。
|| 只要有一者为真,结果就是真。
! 非真即假,非假即真。
6.位运算符
& 两者都为1,结果才是1
| 只要有一者为1,结果就是1
“换位取反”运算
~ 0变1,1变0
^ 两者相同即为0,不同为1
“换位异或”运算
<<左移 整体左移,空位补0,溢出去掉
>>右移 整体右移,正数补0,负数补1,溢出去掉
>>>无符号右移 整体右移,空位补0,溢出去掉
7.三元运算符
三元运算符的运算规则是:若条件式的值为true,则整个表达式取值1,否则取值2
四.数据类型转换
自动类型转换:
一定不会丢失数据
强制类型转换:
有可能丢失数据
五.条件语句
if条件语句
if条件语句是一个重要的编程语句,用于告诉程序在某个条件成立的条件的情况下执行某段语句,而在另一种情况下执行另外的语句。
使用if条件语句,可选择是否要执行紧跟在条件
1.if...else语句
if...else是条件语句中最常用的一种形式,它会针对某种条件有选择的做出处理。通常表现为“如果满足某种条件,就进行某种处理,否则就进行另一种处理”。
2.if...else if多分支语句
if...else if多分支语句用于针对某一事件的多种情况进行处理。通常表现为“如果满足某种条件,就进行某种处理,否则如果满足另一种条件则执行另一种处理”。
2.Switch多分支语句
Switch语句首先计算表达式的值,如果表达式的计算结果和某个case后面的常量值相同,则执行该case语句后的若干个语句直到遇到break语句为止。若没有一个常量的值与表达式相同,则执行default后面的语句。default语句为可选的,如果它不存在,且Switch语句中表达式的值不与任何case的常量值相同,Switch语句则不做处理。
循环语句
1.while循环语句
while语句也称条件判断语句,它的循环方式为利用一个条件来控制是否要继续反复执行这个语句。
2.do...while循环语句
do...while循环语句与while语句类似,它们之间的区别是while语句为先判断条件是否成立再执行循环体,而do...while循环语句则先执行一次循环后,再判断条件是否成立。也就是说,do...while循环语句“{}”中的程序段至少要被执行一次。
for循环语句
for循环是java程序设计中最有用的循环语句之一。一个for循环可以用来重复执行某条语句,直到某个条件得到满足。for循环有两种语句,一是传统的for语句,一种是foreach语句。
1.for语句
传统的for语句中有3个表达式,其语法如下:
表达式1:初始化表达式,负责完成变量的初始化。
表达式2:循环条件表达式,值为boolean型的表达式,指定循环条件。等同于while循环里的表达式。
表达式3:每次循环结束后执行的
2.foreach语句
foreach语句是for语句的特殊简化版本,不能完全取代for语句,但如何foreach语句都可以改写为for语句版本。foreach并不是一个关键字。习惯上将这种特殊的for语句格式称为foreach语句。
循环控制
1.break语句
使用break语句可以跳出Switch结构。在循环结构中,同样也可用break语句跳过当前循环体,从而中断当前循环
continue语句
continue语句是针对break语句的补充。continue不是立即跳出循环体,而是跳过本次循环,回到循环的条件测试部分,重新开始执行循环。在for循环语句中遇到continue后,首先执行循环的增量部分,然后进行条件测试,在while和do...while循环中,continue语句使控制直接回到条件测试部分。
六.一维数组
一维数组实质上是一组相同类型数据的线性集合,当在程序中需要处理一组数据,或者传递一组数据时,可以应用这种类型的数组。
1.创建一维数组
数组作为对象允许使用new关键字进行内存匹配。在使用数组之前,必须首先定义数组变量所属的类型。一维数组的创建有两种方式:
1先声明,再用new关键字进行内存分配
2声明的同时为数组分配内存
2.初始化一维数组
数组与基本数据类型一样可以进行初始化操作。数组的初始化可分别初始化数组中的每个元素。
二维数组
1.创建二维数组
先声明,再用new关键字进行内存分配
声明的同时为数组分配内存
数组名 = new 数组元素的类型[行数][列数]
二维数组分配内存同时设置初始值
数组名 = new 数组元素的类型[][]{值1,值2,...},{值1,值2,...},...,{值1,值2,...};
2.初始化二维数组
二维数组的初始化与一维数组初始化类似,同样可以使用大括号完成。
二维数组元素赋值
数组名[行号] = {值1,值2,...};
数组名[行号][列号] = 值;
七.数组的基本操作
1.遍历数组
遍历数组就是获取数组中的每个元素。通常遍历数组都是使用for循环来实现。
遍历数组需使用双层for循环,通过数组的length属性可获得数组的长度。
2.填充替换数组元素
替换数组元素
Arrays.fill(数组名,值);
替换部分数组元素:前改后不改
Arrays.fill(数组名,前索引,后索引,值);
3.对数组进行排序
arrays.sort(数组名)
查询数组元素:先排序在查询
索引 = Arrays.binarySearch(数组名,元素);
查询数组元素:先排序在查询
索引 = Arrays.binarySearch(数组名,前索引,后索引,元素);
查找元素在数组中的索引位置。
4.复制数组
复制数组元素:空位补0,溢出去掉
新数组名 = Arrays.copyOf(旧数组名,新数组长度);
复制数组部分元素:前在后不在
新数组名 = Arrays.copyOfRange(旧数组名,前索引,后索引)
1.冒泡排序
冒泡排序是最常用的数组排序算法之一,它排序数组元素的过程总是将较小的数往前放。较大的数往后放,类似水中气泡往上升的动作,所以称为冒泡排序
2.直接选择排序
直接选择排序属于选择排序的一种,它的排序速度要比冒泡排序快一些,也是常用的排序算法。
直接选择排序的基本思想是将指定排序位置元素与其他数组元素分别对比,如果满足条件就交换元素值。
3.反转排序
顾名思义,反转排序就是一相反的顺序把原有数组的内容重新排序。
反转排序的基本思想,把数组最后一个元素与第一个元素替换,倒数第二个元素与第二个元素替换,以此类推,直到把所有数组元素反转替换。
八.类
类,是同一类事物的统称
类实质上就是封装对象属性和行为的载体
类是对象的设计图
面向对象具有封装性,继承性和多态性的特点
封装
是面向对象编程的核心,将对象的属性和行为封装起来,载体是类。
封装保证了类内部数据结构的完整性,使用类的用户不能轻易的直接操作类的数据结构,只能执行类允许公开的数据,避免了外部操作对内部数据的影响,提高了系统的可维护性。
继承
继承性主要利用特定对象的共有属性,子类可以继承父类所有的属性,子类还可以衍生子类,但最末尾的类依然能继承父类所有的属性
父类和子类存在一种关系,一个类在继承中它即可以是其他类的父类,为其他类提供属性和行为,也可以是其他类的子类。例如:三角形是图形类的子类也是等边三角形的父类。
多态
其实就是父类对象应用于子类的特征就是多态,多态就是继承父类的所有但又会有不属于父类也不同于其他子类的属性就相当于它的个性。
局部变量的有限范围
可以将局部变量的有效范围为变量的作用域,局部变量的有效范围从该变量的声明到该变量的结束为止
this关键字
用于表示本类当前的对象