------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
标识符:
Java语言中,对于变量,常量,函数,语句块也有名字,我们统统称之为Java标识符.
标识符是用来给类、对象、方法、变量、接口和自定义数据类型命名的。
由26个英文字母大小写,数字:0-9 符号:_ $ 组成
定义合法标识符规则:
1、不可以使用关键字。
2、数字不可以开头。
3、Java中对大小写敏感。
Java中的注释格式:
单行注释:
格式: //注释文字
多行注释:
格式:
/*注释文字
*注释文字
*/
文档注释:
格式:/** 注释文字 */
它可以通过javadoc命令对文档注释提取,成为说明书。
常量:
常量表示的是在程序中不能被修改的数据。
java中常量的分类:
1,整数常量。所有整数
2,小数常量。所有小数
3,布尔型常量。比较特殊,只有两个数值。true 和false。
4,字符常量。将一个数字、字母或者符号用单引号( ‘’ )标识。
5,字符串常量。将一个或者多个字符用双引号标识。
6,null常量。只有一个数值就是:null.
整数运用较常见,对于整数:java有三种表现形式。
十进制:0-9 ,满10进1.
八进制:0-7 ,满8进1. 用0开头表示。
十六进制:0-9,A-F,满16进1. 用0x开头表示。
进制的基本转换算法:
十进制、二进制互转:
十进制转成二进制 除以2取余数
二进制转成十进制 乘以2的幂数
十进制、十六进制互转:
负数的二进制表现形式
对应的正数二进制取反加1
变量:
就是将不确定的数据进行存储。也就是需要在内存中开辟一个空间。
分为:局部变量或者成员变量
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间
整数默认:int 小数默认:double
类型转换分为:
自动类型转换(隐式类型转换)
强制类型转换(显式类型转换)
自动类型提升示例:
byte a = 4;
int x = 5;
x = x + a;//a会自动提升为int类型进行运算,占用四个字节内存。
强制类型转换示例:
byte a = 3;
a = a + 4;//系统会报错
a = (byte)a+4;//强制类型转换,强制将a+4的结果转换为byte类型,再赋值给a。
分析基本数据类型的特点,最大值和最小值。
1、
基本类型:int 二进制位数:32
最小值: -2147483648 (-2的31次方)
最大值: 2147483647 (2的31次方-1)
2、
基本类型:short 二进制位数:16
最小值:-32768 (-2的15此方)
最大值:32767 (2的15次方-1)
3、
基本类型:long 二进制位数:64
最小值:-9223372036854775808 (-2的63次方)
最大值:9223372036854775807 (2的63次方-1)
4、
基本类型:float 二进制位数:32
最小值:1.4E-45 (2的-149次方)
最大值:3.4028235E38 (2的128次方-1)
5、
基本类型:double 二进制位数:64
最小值:4.9E-324 (2的-1074次方)
最大值:1.7976931348623157E308 (2的1024次方-1)
算术运算符:
比较运算符:
逻辑运算符:
“&”和“&&”的区别:
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,双或时,左边为真,右边不参与运算。
位运算:
三元运算符:
格式:
(条件表达式)?表达式1:表达式2;
如果条件为true,执行表达式1;
如果条件为false,执行表达式2;
三元运算符是if语句的简化形式,但有其限制,当计算结果不是布尔型时,只能用if语句。
程序流程控制:
判断结构:if语句
三种格式:
1. if(条件表达式)
{
执行语句;
}
1. if(条件表达式)
{
执行语句;
}
else
{
执行语句;
}
1. if(条件表达式)
{
执行语句;
}
else if (条件表达式)
{
执行语句;
}
……
else
{
执行语句;
}
if语句特点:
a,每一种格式都是单条语句。
b,第二种格式与三元运算符的区别:三元运算符运算完要有值出现。好处是:可以写在其他表达式中。
c,条件表达式无论写成什么样子,只看最终的结构是否是true 或者 false;
选择结构:
switch语句
格式:
switch(表达式)
{
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
…...
default:
执行语句;
break;(可以省略)
}
switch语句特点:
a,switch语句选择的类型只有四种:byte,short,int , char。
b,case之间与default没有顺序。先执行第一个case,没有匹配的case执行default。
c,结束switch语句的两种情况:遇到break,执行到switch语句结束。
d,如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。
如果判断的具体数值不多,而且符合byte short int char这四种类型。
虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。
其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。
循环结构:
while语句格式:
while(条件表达式)
{
执行语句;
}
do while语句格式:
do
{
执行语句;
}while(条件表达式);
do while特点是条件无论是否满足,
循环体至少被执行一次。
格式:
for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
执行语句;
}
1、for里面的连个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然
后再执行循环后的操作表达式,接着继续判断循环条件,重复找个过程,直到条件不满足为止。
2、while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就是在内存中释放。而while
循环使用的变量在循环结束后还可以继续使用。
3、最简单无限循环格式:while(true) , for(;;),无限循环存在的原因是并不知道循环多少次,而是根据某
些条件,来控制循环。
break(跳出), continue(继续):
break语句:应用范围:选择结构和循环结构。
continue语句:应用于循环结构。
for和while的区别:
1、变量有自己的作用域,对于for来说:如果将用于控制循环的增量定义在for语句中。那么该变量只在for语
句内有效。For语句执行完毕,该变量在内存中被释放。
2、For和while可以进行互换,如果需要定义循环增量。用for更为合适。
Java代码
for(int x = 0; x<3 ; x++)
{
System.out.println("x="+x);
}
int y=0;
while(y<3)
{
System.out.println("y="+y);
y++;
}
System.out.println("y===="+y);
For练习:
*
**
***
****
*****
Java代码
for (int x=0; x<5 ;x++ )
{
for (int y=0 ; y<=x ; y++ )
{
System.out.print("*");
}
System.out.println();
}
1
12
123
1234
12345
Java代码
for (int x=1; x<=5; x++)
{
for (int y=1; y<=x;y++ )
{
System.out.print(y);
}
System.out.println();
}
九九乘法表
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
Java代码
for (int x=1; x<=9 ; x++)
{
for (int y=1; y<=x; y++)
{
System.out.print(y+"*"+x+"="+y*x+"\t");
}
System.out.println();
}
函数:
什么是函数:
函数就是定义在类中的具有特定功能的一段独立小程序。
函数也称为方法。
函数的格式:
修饰符返回值类型函数名(参数类型形式参数1,参数类型形式参数2,)
{
执行语句;
return 返回值;
}
返回值类型:函数运行后的结果的数据类型。
参数类型:是形式参数的数据类型。
形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。
实际参数:传递给形式参数的具体数值。
return:用于结束函数。
返回值:该值会返回给调用者。
重载:
在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
特点:
与返回值类型无关,只看参数列表。
数组:
1、同一种类型数据的集合。其实数组就是一个容器。
2、可以自动给数组中的元素从0开始编号,方便操作这些元素。
3、元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
栈内存:
用于存储局部变量,当数据使用完,所占空间会自动释放。
堆内存:
1、数组和对象,通过new建立的实例都存放在堆内存中。
2、每一个实体都有内存地址值
3、实体中的变量都有默认初始化值
4、实体不在被使用,会在不确定的时间内被垃圾回收器回收
Java代码
public static void printArray(int[] arr)
{
System.out.print("[");
for(int x=0; x<arr.length; x++)
{
if(x!=arr.length-1)
System.out.print(arr[x]+", ");
else
System.out.println(arr[x]+"]");
}
}
获取数组的最大值:
Java代码
public static int getMax_2(int[] arr)
{
int max = 0;
for(int x=1; x<arr.length; x++)//遍历比较数组元素的大小
{
if(arr[x]>arr[max])//经较大元素的角标赋值给max
max = x;
}
return arr[max];
}
获取最小值:
Java代码
public static int getMin(int[] arr)
{
int min = 0;
for(int x=1; x<arr.length; x++)
{
if(arr[x]<arr[min])
min = x;
}
return arr[min];
}
排序方法:
选择排序:
Java代码
/*
选择排序。
内循环结束一次,最值出现头角标位置上。
*/
public static void selectSort(int[] arr)
{
for (int x=0; x<arr.length-1 ; x++)
{
for(int y=x+1; y<arr.length; y++)
{
if(arr[x]>arr[y])
{
int temp = arr[x];
arr[x] = arr[y];
arr[y]= temp;
}
}
}
}
/*
冒泡排序
*/
public static void bubbleSort(int[] arr)
{
for(int x=0; x<arr.length-1; x++)
{
for(int y=0; y<arr.length-x-1; y++)//-x:让每一次比较的元素减少,-1:避免角标越界。
{
if(arr[y]<arr[y+1])
{
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
}
折半查找:
Java代码
/*
折半查找。提高效率,但是必须要保证该数组是有序的数组。
*/
public static int halfSearch(int[] arr,int key)
{
int min,max,mid;
min = 0;
max = arr.length-1;
mid = (max+min)/2;
while(arr[mid]!=key)
{
if(key>arr[mid])
min = mid + 1;
else if(key<arr[mid])
max = mid - 1;
if(min>max)
return -1;
mid = (max+min)/2;
}
return mid;
}
*
折半的第二种方式。
*/
public static int halfSearch_2(int[] arr,int key)
{
int min = 0,max = arr.length-1,mid;
while(min<=max)
{
mid = (max+min)>>1;
if(key>arr[mid])
min = mid + 1;
else if(key<arr[mid])
max = mid - 1;
else
return mid;
}
return -1;
}
二维数组:
格式1:int[][] arr = new int[3][2];
定义了名称为arr的二维数组
二维数组中有3个一维数组
每一个一维数组中有2个元素
一维数组的名称分别为arr[0], arr[1], arr[2]
给第一个一维数组1脚标位赋值为78写法是:arr[0][1]= 78;
格式2:int[][] arr = new int[3][];
arr中定义了3个未定义长度的一维数组。
格式3:int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};
arr中定义了3个一维数组。
第一个一维数组为{3,8,2},第二个一维数组为{2,7},第三个一维数组{9,0,1,6}