---------------------- android培训、java培训、期待与您交流! ----------------------
一、Java语言基础组成
(一)关键字
JAVA中具有某些特殊含义的单词。
(二)标示符
1、在程序中自定义的一些名称;
2、由二十六个英文字母的大小写、数字(0-9)、_和$组成;
3、定义合法标示符的规则:
a.数字不能开头;
b.不可以使用关键字;
c.严格区分大小写。
4、Java中的名称规范:
a.包名:多单词组成时所有字母都小写(xxyyzz);
b.类接口名:多单词组成时,所有单词首字母大写(XxxYyyZzz);
c.变量名和函数名:多单词组成时,第一单词首字母小写,第二个单词开 始没个单词首字母大写(xxxYyyZzz);
d.常量名:所有字母都大写,多单词时每个单词用下划线连接(XXX_YYY_ZZZ)。
(三)注释
单行注释、多行注释、多行注释
(四)常量
1、常量:表示不能改变的数值。
2、Java中常量的分类:
整数常量、小数常量、布尔常量、字符常量('a')、字符串常量、null常量。
3、Java中证书三种表现形式:
二进制(0、1)十进制(0-9),八进制(0-7),十六进制(0-F)。
4、数制之间的转换:
a.十进制——>二进制:除二取余法。
b.二进制——>十进制:按权展开相加。
c.二进制——>八进制:三位二进制变一位八进制。
d.八进制——>二进制:一位八进制变三位二进制。
e.二进制——>十六进制:四位二进制变一位十六进制。
f.十六进制——>二进制:一位十六进制变四位二进制。
5、负数二进制表现形式:
负数的二进制就是其绝对值的二进制形式取反加一,负数的二进制最高位是1 。
(五)变量
1、概念:就是讲不确定的数据进行存储,也就是要在内存中开辟一个空间。
2、变量名称:就是变量的名字。
3、数据类型:
a.基本数据类型:
字节型byte(1字节)
短整型short(2字节)
整形int(4字节)
长整形(8字节)
单精度型float(4字节)
双精度型double(8字节)
字符类型char(2字节)
布尔类型boolean(1 bit)
b.引用数据类型:
字符串(0-65535)、类、接口和数组。
4、在程序中默认的是int和double。
(六)运算符
1、算术运算符
+、-、*、/、%、++、--、连接符(+)
例子:
System.out.println("5+5="+5+5)//输出结果为5+5=55
2、赋值运算符
=、+=、-=、/=、%=
事例:
int a,b,c;a=b=c=3;
int a=3;
a+=5;//相当于a=a+5;
3、比较运算符
==、!=、<、>、<=、>=、instanceof(检查是否是对象)
4、逻辑运算符
与(&)、或(|)、异或(^)、非(!)、双与(&&)、双或(||)
逻辑运算符用于连接boolean类型的表达式。
true&true=true; true&false=false;
false&true=false; false&false=false;
结论:只要两边有一个是false,结果就是false。两边都为true时结果才是true。
true|true=true; true|false=true;
false|true=true; false|false=false;
结论:两边只有一个为true时,结果为true。两边都为false时,结果为false。
true^true=false; false^false=false;
true^false=true; false^true=true;
结论:两边相通,结果是false,两边不同结果为true。
!true=false; !false=true;
&和&&的区别:&无论左边是true或者false,右边都运算。
&&当左边为false时,右边不运算。
|和||的区别:|两边都运算,
||当左边为true时,右边不运算。
5、位运算符
左移(<<)、右移(>>)、无符号右移(>>>)、与运算(&)、 或运算(|)、异或运算(^)、反码(~)
结论:一个数异或同一个数两次,结果还是那个数,可用于加密。还可以用于交换两个变量的值。
事例:用移位方法求一个数的十六进制。
public class OperateDemo
{
public static void main(String[] args)
{
int num=60;
//获取60的最低四位,通过与15
int n1=60&15;
System.out.println((char)(n1-10+'A'));
//获取下一组四位,通过将60右移四位,
int temp=60>>>4;
//对temp的值进行最低四位的获取
int n2=temp&15;
System.out.println(n2);
}
}
6、三元运算符
a.格式:
(条件表达式)?表达式1:表达式2;
结论:如果条件为true,执行表达式1;否侧,执行表达式2
事例:int x = 2,y;
y=(x>1)?100:200;//结果为100.
(七)程序流程控制
1、判断结构
a.if(条件表达式)
{
执行语句;
}
b.if(条件表达式)
{
执行语句;
}
else
{
执行语句;
}
c.if(条件表达式)
{
执行语句;
}
else if(条件表达式)
{
执行语句;
}
...
else
{
执行语句;
}
2、选择结构
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,那么程序会继续向下执 行,不在判断case运行可以执行的语句,直到遇到break或者switch的结尾结束。
事例:根据指定的月份,打印该月份所属的季节。
class SwitchTest
{
public static void main(String[] args)
{
int x=4;
switch(x)
{
case3:
case4:
case5:
System.out.println("春季");
break;
case6:
case7:
case8:
System.out.println("夏季");
break;
case9:
case10:
case11:
System.out.println("秋季");
break;
case12:
case1:
case2:
System.out.println("冬季");
break;
default:
System.out.println("wrong");
}
}
}
3、循环结构
a.while语句格式:
while(条件表达式)
{
执行语句;先判断条件,只有条件满足才执行。
}
事例:class WhileDemo
{
public static voidmain(Sting[] args)
{
int x=1;
while(x<3)//循环判断条件
{
System.out.println("x="+x);
x++;
}
}
}
b.do while语句格式:
do
{
执行语句;
}while(条件表达式)//do while的特点是无论条件是否满足,循环体至少执行一次。
事例:class DoWhileDemo
int x=1;
do
{
System.out.println("do:x="+x);
x++;
}
while(x<3);//注意这儿的分号,这是跟while语句的区别
c.for(初始化表达式;循环表达式;循环后的操作表达式)
{
执行语句;
}
事例:class ForDemo
{
public static void main(String[] args)
{
for(int x=0;x<3;x++)
{/*for循环语句的执行顺序:第一步,执行x=0;
第二步,执行判断条件x<3;第三步,如果条件
满足执行循环体,不满足则跳出循环。最后在满足的情况下,执行x++。*/
System.out.println("x="+x);
}
}
}
注意:for语句中的变量,它的作用域只在for语句之内。当for 循环结束时,变量也就释放了。
事例:打印九九乘法表
class ForForDemo
{
public static void main(String[] args)
{
for(x=1;y<=9;x++)
{
for(y=1;y<=x;y++)
{
System.out.print(y+"*"+x"="y*x+"\t");
}
System.out.print();
}
}
}
4、其他流程控制语句
a.break(跳出):应用于选择结构和循环结构,使用break可以跳出循环体。
b.continue(继续):应用于循环结构,continue语句是结束本次循环,继续下次循环。
d.标号的出现,可以让这两个语句作用于指定的范围。
e.break和continue单独存在时,下面不可以有任何语句,因为都执行不到。
事例:
class OtherDemo
{
w: for(int x=0;x<3;x++)
{
for(int y=0;y<4;y++)
{
System.out.println("x="+x);//x=0
break w;
}
}
}
class OtherDemo1
{
w: for(int x=0;x<3;x++)
{
for(int y=0;y<4;y++)
{
System.out.println("x="+x);//x=0
continue w;
}
}
}
二、函数
(一)函数的定义:
函数就是定义在类中的具有特定功能的一段独立小程序,也叫方法。
(二)函数的重载(overload)
1、重载的概念:
在同一个类中,允许存在一个以上的同名函数,只要它的参数个数或者参数类 型不同即可。
2、重载的特点:
与返回值的类型无关,只看参数列表。方便阅读,优化了程序设计。
三、数组
(一)数组的定义:
1、同一种类型数据的集合,其实数组就是一个容器。可以自动给数组中的元素从0开始编号,方便操作这些元素。
2、数组的格式:
a.格式一
元素类型[] 数组名= new 元素类型[元素个数或数组长度];
b.格式二
元素类型[] 数组名= new 元素类型[元素,元素,...];
( 二)数组的用法
1、数据的长度属性:数组名.length;
2、遍历输出数组中的元素
事例: class ArrayTest
{
public static void main(String[] args)
{
int[] arr={1,8,5,6,2,0,4};
arrayPrint(arr);
}
public static void arrayPrint(int[] arr)
{
for(int x=0;x<arr.length;x++)
{
System.out.print(arr[x]);
}
}
}
3、数组的排序
事例:class ArrayTest2
{
public static void selectSort(int[] arr)
{
for(x=0;x<arr.length-1;x++)
{
for(y=x+1;y<arr.length;y++)
{
if(arr[x]>arr[y])
{
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
}
}
4、冒泡排序
class ArrayTest3
{
public static void bobbleSort(int[] arr)
{
for(x=0;x<arr.length-1;x++)
{
for(y=x+1;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;
}
}
}
}
}
5、 数组中自带的排序功能:Arrays.sort[arr];
6、数组的折半查找
前提是数据必须是有序的,才能使用折半查找。
事例:public static int halfSearch(int[] arr,int key)
{
int min=0;
int max=arr.length-1;
int mid=(min+max)/2;
while(arr[mid]!=key)
{
if(key>arr[mid])
min =mid+1;
max=mid-1;
if(min>max)
return-1;
mid=(min+max)/2;
}
return mid;
}
(三)二维数组
1、二维数组的格式:
二维数组类型[][] 数组名= new 数组类型[个数][个数]
四、内存结构
Java程序在运行过时,需要在内存中分配空间,为了提高运算效率,对内存空间进行了不同区域的划分,因为每一片区域都有特定处理数据方式和内存管理方式。
(一)栈内存
用于存储局部变量,当数据使用完时,所占空间会自动释放。
(二)堆内存
数据和对象以及通过new创建的实例对象都存放在堆内存中。每个实体都有内存地址值 ,实体中的变量都有默认初始化值null。实体不再被使用了,会在不确定的时间内被垃圾 回收器回收。
(三)方法区
又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class,static的方法。方法区中包含的都是在整个程序中永远唯一的元素,如class、static变量。
(四)本地方法区
(五)寄存器
---------------------- android培训、java培训、期待与您交流! ----------------------