JAVA基础案列教程
syso+按着alt+/ 输出System.out.print
main+按着alt+/ 输出public static void main(String[] args){
alt+上下键 两行代码互换位置
ctrl+alt+上下键 复制上一行代码
2.1掌握java基本语法
java中的程序代码分为结构定义和功能执行语句
结构定义声明类或方法
功能执行语句用于实现具体功能,每条功能执行语句的最后必须用英文分号“;”结尾。
java连续的字符串不能分开在两行中书写
例如System.out.print("wen
zi");
可以System.out.print("wen“+
字");
java的注释
java注释分为三中类型:
单行注释://内容
多行注释:/*内容
内容 */
“多行注释可以放单行注释,单行注释可以放多行注释
文档注释:以/**开头
Java的标识符
可以是任意顺序的大小写字母、下划线(_)、美元符号($)和数字组成,
不能是数字开头不能是Java的关键字
Java的关键字
关键字也称做保留字例如,
public权限共有、
如果定义关键字容易造成错误
一、整数类型
整数类型简称整形,用来储存整数数值,既没有小数部分的数值。可以是正数,也可以是负数。整形数据根据它所占内存大小的不同,可分为byte、short、int和long 4种类型。它们具有不同的取值范围。
数据类型 内存空间(8位等于1字节) 取值范围
byte 8位
-128~127
short 16位 -32768~32767
int 32位 -2147483648~2147483647
long 64位 -9223372036854775808~9223372036854775807
二、浮点类型
浮点类型简称浮点型,用来存储含有小数部分的数值,Java语言中浮点类型分为单精度浮点类型(float)和双精度浮点类型(double),他们具有不同的取值范围,如下图
数据类型 内存空间(8位等于1字节) 取值范围
float 32位 1.4E-45~3.4028235E38
double 64位 4.9E-324~1.7976931348623157E308
在默认的情况下小数都被看做double型,若想使用float型小数,则需要在小数后面添加F或f。另外,可以使用后缀d或D来表明这是一个double类型数据,但加不加d或D并没有硬性规定。而定义float型变量时,如果不加F或f,系统会认为时double类型数据,进而出错。
三、转义字符
转义字符是一种特殊的字符变量,它以反斜杠“\”开头,后跟一个或多个字符。转义字符具有特定的含义,不同的字符原有的意义,故称“转义”。例如,printf函数的格式串中用到的“\n”就是一个转义字符,意思是“回车换行”。
四、布尔类型
布尔类型又称逻辑类型,简称布尔型,通过关键字boolean来定义布尔类型变量。布尔类型只有true和false两个值,分别代表布尔逻辑中的“真”和“假”。布尔值不能与整数类型进行转换。布尔类型通常被用在流程控制中,作为判断条件。
常量
1、标识符
标识符可以简单的理解位一个名字,是用来标识类名、变量名、方法名、数组名、文件名的有效字符序列
2、关键字
关键字又称保留字,是Java语言中已经被赋予特定意义的一些单词,不可以把这些单词作为标识符来使用。
3、声明变量
声明变量就是要告诉编译器(compiler)这个变量的数据剋行,这样编译器才知道需要配置多少空间给他,以及它能存放什么样的数据。声明一个整数类型变量和声明一个类型变量,
int age; \\声明int型变量
char char1 = 'r'; \\声明char型变量并赋值
4、声明常量
在程序运行过程中一直不会改变的量称为常量,通常也被称为“final变量”。常量在整个程序中只能被赋予一次。在为所有的对象共享值时,常量是非常有用的。
5、成员变量
在类体中所有声明的变量被称为成员变量,成员变量在整个类中都有效。类的成员变量又可分为两种,即为静态变量和实例变量。
&&与,||或 ,!非。~取反,^异或
&&两者都为真,结果才是真。
||只要一者为真,结果就是真。
!非真为假,非假为真。
&两者都为1,结果为1
|只要有一者为1,结果为1
~0变1,1变0
^两者相同为0,不同为1
一、赋值运算符
赋值运算符以符号“=”表示,它是一个二次元运算符(对两个操作数作处理),其功能是将右方操作数所含的赋值给左方的操作数。
二、算数运算符
Java中的算术运算符主要有+(加)、-(减)、*(乘)、/(除)、%(求余),它们都是二次元运算符。Java中算术运算符的功能及使用方式如下
三、自增和自减运算符
自增、自减运算符是单位运算符,可以放在操作元之前,也可以放在操作元之后。
四、比较运算符
比较运算符属于二次元运算符,用于程序中的变量之间、变量和自变量之间以及其他类型的信息之间的比较。
五、逻辑运算符
六、位运算符
位运算符除“按位与”和“按位或”运算符外,其他只能用于处理整数的操作数,包括byte、short、char、int、和long、等数据类型。位运算符完全针对为方面的操作。
七、三元运算符
三元运算符的使用格式为:
条件式 ? 值1 : 值2;
三元运算符的运算规则为:若条件式的值为true,则整个表达式取“值1”,否则取“值2”例如:
boolean b =20<45 ? true : false;
上述程序表达式“20 <45”的运算结果返回真,那么 bolean 型变量b 取值为true。相反,如果表达式的运算结果返回为假,则 boolean 型变量 b 取值为 false。
三元运算符等价于 if...else 语句,例如上述代码等价于:
boolean a; //声明 boolean 型变量
if(20<45) //将 20<45作为判断条件
a = true, //条件成立,将true 赋值给 a
else
a = false; //条件不成立,将 false 赋值给 a
八、运算符优先级
九、数据类型转换
类型转换是将一个值从一种类型更改为另一种类型的过程。例如,可以将 String 类型的数据“45转换为数值型,也可以将任意类型的数据转换为 String 类型。
如果从低精度数据类型向高精度数据类型转换,则永远不会溢出,并且总是成功的:而把高精数据类型向低精度数据类型转换时,则会有信息丢失,有可能失败。数据类型转换有两种方式,即隐式转换与显式转换。
十、隐式类型转换
从低级类型向高级类型的转换,系统将自动执行,程序员无须进行任何操作。这种类型的转换称
为隐式转换。下列基本数据类型会涉及数据转换,不包括逻辑类型和字符类型。这些类型按精度从低到高排列的顺序为byte
float y=x //将x赋值给y,y的值为 50.0
隐式转换也要遵循一定的规则,来解决在什么情况下将哪种类型的数据转换成另一种类型的数据表
十一、显示类型转换
当把高精度的变量的值赋给低精度的变量时,必须使用显式类型转换运算(又称强制类型转换
语法如下:
(类型名)要转换的值
例如,将高精度数字转换为低精度数字。代码如下:
int a =(int)45.23: //此时输出a的值为45
long y =(long)456.6F; //此时输出y的值为456
nt b = (int)d. //此时输出b的值为100
执行显式类型转换时,可能会导致精度损失。
1,分支结构;
主要有四种:if结构、if...else结构、if...else if结构、switch…case结构。
if结构:满足条件时执行语句,不满足则不执行。
if...else结构:满足条件执行语句,不满足则执行另外的语句。
if...else if结构:多个条件,满足不同条件执行不同语句。
switch…case结构:一种特殊的分支结构,只能用于判断整数,需要配合break使用
2,循环结构;while(条件){
2
}
3
1,1->条件为真->2->....条件为真->2->条件为假->3
do....while循环;
1 do{2}while(条件)3, 1->2->条件为真->2条件为真->....->2条件为假->3
for循环;
3;for(2;3;4){
5
}
6
1->2->3T->5->4->.....->3T->5->4->3F->6
while嵌套do....while;
1while(条件1){ 1
2 ->条件1为真->2->
do{ 3->条件2为真->...->3->条件2为真->
3 3->条件2为假->4
}while(条件2) ->........
4 ->条件1为真->2->
} 3->条件2为真->....->3->条件2为真->
5 3->条件2为假->4
->条件1为假->5
do...while嵌套while;
1 1->
do{ 2->条件1为真->3->...->条件1为真
2 ->3->条件1为假->4->条件2为真->
while(条件1){ ....->
3 2->条件1为真->3->....->条件1为真
} ->3->条件1为假->4->条件2为真->
4 2->条件1为真->3->.....->条件1为真
}while(条件2) ->3->条件1为假->4->条件2为假->5
while环,do.....while循环,for循环流程图。
while嵌套do....while循环和do...while嵌套while的流程图。
5.1数组概念
是由很多格子组成的,具体存储什么东西取决于你给的定义。数组是具有相同类型的一组数据的集合,可以根据数组的维度分为一维数组,二维数组...
5.2一维数组
一维数组实质上是一组相同类型的线性集合,当在程序中需要处理一组数据,或者传递一组数据时,可以应用这种类型的数组。
5.2.1创建一维数组
先声明,再用new关键字去进行内存分配
数组元素类型 数组名字[];
数组元素类型[] 数组名字;
数组元素类型决定了数组的数据类型,它可以是JAVA中任意的数据类型,包括简单类型和组合类型。数组名字为一个合法的标识符。
声明的同时为数组分配内存
这种创建数组的方法是将数组的声明和内存的分配合在一起执行。语法如下
数组元素的类型 数组名 = new 数组元素的类型[数组元素的个数];
5.2.2初始化一维数组
数组与基本数据类型一样可以进行初始化操作。数组的初始化可分别初始化 数组中的每个元素。数组的初始化有以下两种方式:
int arr[]=new int{1,2,3,5,25};
int arr2[]={34.23.12.6};
5.2.3使用一维数组
在JAVA集合中,一维数组是常见的一种数据结构。那么,如何使用一维数组解决 生活中的实际问题呢?
5.3二维数组
5.3.1创建二维数组
先声明,再用new关键字进行内存分配
数组元素的类型 数组名字[][];
数组元素的类型[][]数组名字;
申明二维数组,代码如下:
int a [][]
5.3.2初始化二维数组
二维数组的初始化与一维数组初始化类似,同样可以使用大括号完成。
5.3.3使用二维数组
二维数组在实际应用中用得非常广泛。下面的实例就是使用二维数组输出一个3行4列且所有元素都是0的矩阵。
5.4数组的基本操作
5.4.1遍历数组
遍历数组就是获取数组中的每个元素。通常遍历数组都是使用for循环来实现。遍历一维数组很简单,也很好理解。
5.4.2填充替换数组元素
数组中的元素定义完成后,可通过Arrays类的静态方法fill()来对数组中的元素进行替换。该方法通过各种重载形式可完成对任意类型的数组元素的替换。
5.4.3对数组进行排序
通过Arrays类的静态方法sort()可以实现对数组的排序。sort()方法提供了多种重载形式,可对任意类型的数组进行升序排序。
5.4.4复制数组
Arrays类的copyOf()方法与copyOfRange()方法可以实现对数组的赋值。copyOf()方法是复制数组至指定长度,copyOfRange()方法则将指定数组的指定长度复制到一个新数组中。
5.4.5查询数组
利用二分法
5.5多维数组
多维数组可以简单地理解为在数组中嵌套数组。在程序中比较常见的就是二位数组。
二维数组的定义有很多凡是,具体如下
方式一:
int[][]arr =new int [3][4];
上面的代码定义了一个3行4列的二位数组,结果如下
方式二:
int[][] arr =new int [3][];
上述方式与第一种方式类似,只是数组中每个元素的长度不确定。结构如下
上述方式定义的二位数组有三个元素,这三个元素都是数组,分别是[1,2]、[3,4,5,6]、[7,8,9].
课堂笔记
替换数组元素
Arrays.fill(数组名,值);
替换数组部分元素:前改后不改
Arrays.fill(数组名,前索引,后索引,值);
数组排序
Arrays.sort(数组名);
复制数组:空位补0 溢出去掉
新数组名=Arrays.copyof(旧数组名,新数组长度);
复制数组部分元素:前在后不在
新数组名=Arrays.CopyOfRange(旧数组名,前索引,后索引);
查询数组元素:先排序再查询
索引=Arrays.binarysearch(数组名,元素);
查询数组元素:先排序再查询 前含后不含
索引=Arrays.binarysearch(数组名,前索引,后索引,元素);
5.5数组排序算法
5.5.1冒泡排序
在程序设计中,经常需要将一组数列进行排序,这样更加方便统计与查询。程序常用的排序方法有冒泡排序、选择排序和反转排序等。冒泡排序以简洁的思想与实现方法而备受开发人员青睐,是广大学习者最先接触的一种排序算法,也是最常用的数组排序算法之一,它排序数组元素的过程总是将较小的数往前放、较大的数往后放,类似水中气泡往上升的动作,所以称为冒泡排序。
5.5.2直接选择排序
直接选择排序属于选择排序的一种,它的排序速度要比冒泡排序快一些,也是常用的排序算法,初学者应该掌握。
5.5.3反转排序
顾名思义,反转排序就是以相反的顺序把原有数组的内容重新排序。反转排序算法在程序中也经常用到。