1.数组
1.1数组的基本概念及作用
1.数组是相同数据类型元素的集合
数组本身是引用数据类型,即对象。但是数组可以存储基本数据类型,也可以存储引用数据类型。
2.数组的举例:
int [] a = new int []{45,65,548,74,12};
String [] s = new String []{"小红","小李","小凯"};
1.2数组的声明
1.数组的声明的两种方式:
数据类型 [] 数组名字 例如:int [] a;
数据类型 数组的名字 [] 例如: int a [];
注意:
在Java语言中两种声明方法没有任何区别,但是建议大家用第一种,避免混淆a的数据类型。
数组在声明后还只是一个空指针,不能使用,要想使用必须创建。
1.3数组的创建
1.数组创建的三种方式:
//声明数组的同时,根据指定的长度分配内存,但数组中元素值都为默认的初始化值
double [] a=new double[15];
//声明数组并分配内存,同时将其初始化
int[] b = new int[]{15, 56, 87, 458, 332};
//与前一种方式相同,仅仅只是语法相对简略
int[] ary2 = {15, 56, 87, 458, 332};
2.从另一个角度,数组创建可以分为动态和静态两种
动态创建数组(没有为元素赋值,可以结合for循环进行赋值)
char[] a = new char[12];
静态创建数组,在创建的时候,即为每个元素赋初值
int[] ary1 = new int[]{45,23,45,6,15,23};
1.4数组的长度
int [] a = new int []{45,23,45,6,15,23};
System.out.println(a.length);
注意:数组的长度是属性,String的长度是length();
创建数组的时候必须指定数组的长度,而且一经定义则不允许改变。
数组的长度虽然是7,但是在内存中实际给8个位置,另外一个存储7.
1.5数组赋值
1.在C语言中,不可以将数组直接赋值给另一个数组;
在Java中,语法上允许这样做,但实际得到的效果是两个数组引用指向同一块内存。
int[] a = {2, 4, 6, 8, 10};
int[] b;
ary2 = ary1; //允许这样赋值
2.示例
public class test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] a=new int [] {1,2,5,4,8,8,9};
int [] b;
b=a;
b[2]=325;
int i=0;
System.out.println("数组a中的元素:");
for(i=0;i<a.length;i++) {
System.out.println(a[i]);
}
System.out.println("数组b中的元素:");
for(i=0;i<b.length;i++) {
System.out.println(b[i]);
}
}
}
2.Java中的运算符
按照功能分,Java中的运算符可以分为四类:
算术运算符
位运算符
比较运算符
逻辑运算符
除了== 及 !=、+外,其他运算符都是针对基本数据类型进行运算,==及!=可以对基本数据类型及引用类型进行运算,+还可以对字符串进行连接操作
重点:++、--、==、!=、&&、||
2.1算术运算符
1.单目:+(取正)-(取负) ++(自增1) - -(自减1)
双目:+ - * / %(取余)(+还可以连接字符串)
三目:a>b?true:false
说明:当a大于b的时候,为true(也就是冒号之前的值),否则为false;这整个运算符包括一个关系运算符(可以是“>”"<""!="等等),一个“?”,一个“:”,冒号前后需要有两个表达式或者是值或者是对象.
2.总结
1、单目运算中的++,--的取值顺序
2、基本运算符要掌握,尤其是/和%
3、要掌握三目运算符的逻辑过程
2.2位运算符
位运算符:(先转化成二进制再进行运算)
与(&)、非(~)、或(|)、异或(^)
移位运算符:<<、 >>(有符号右移) 、 >>>(无符号右移)
左移1位相当于乘以2,右移1位相当于除以2,比乘除运算效率更高
2.3比较运算符
比较运算符:
== ,<,>,<=,>=,!=
==与!=比较基本数据类型是比较值,比较引用类型是虚地址
除了== !=外,都只能比较基本数据类型
注意:比较运算符的返回值为true或false
2.4逻辑运算符
1.用于连接两个boolean类型的表达式
&& (双与) 、|| (双或) 、&(与)、|(或)、^(异或)、!(非运算)
2.注意事项
&&与&的运算结果是相同的,对于&而言无论左边为什么值,右边都参与运算;对于&&来说,只要左边为false右边就不再运算,直接返回false
||与|的运算结果是相同的,对于|而言无论左边为什么值,右边都参与运算;对于||来说,只要左边为true右边就不再运算,直接返回true
&&和||可以理解为物理上的短路,实际中多用&&及||
3.流程控制
Java中的流程:
顺序流程
分支流程
循环流程
3.1分支语句if/else
1.条件语句 — if
条件语句 — if…else…
条件语句 — if…else if…
2.条件语句 — if (说明)
条件表达式可以是任何一种逻辑表达式
如果表达式值为true,则执行花括号的内容后,再执行后面的语句
如果表达的值为false,则直接执行后面的语句
如果,大括号只有一条语句,则可以省略大括号(推荐不省略)
if(c==‘+‘) System.out.println(a+b);
3.条件语句 — if…else…
nt x = 2;
if(x=2){
X+=2;
}
else{
X-=2;
}
System.out.println("x="+x);
4.条件语句 — if…else if…
int x = 88;
if(x<60){
System.out.println(“成绩不合格”);
}
else if(x>=85){
System.out.println(“成绩优秀”);
}
else{
System.out.println(“成级良好”);
}
6.总结
条件语句的三种格式
if语句和三目运算符的关系
if语句中的一些说明
3.2条件语句 — switch
1. 条件语句 — switch
语法格式 — switch
switch (表达式)
{
case 取值1:语句块1
…
case 取值n:语句块n
default: 语句块n+1
}
2.条件语句 — switch(说明)
表达式的值只可以接受int、byte、char、short 型、枚举,JDK1.6以后String也可以,不接受其他类型的值,不允许有重复的case取值
switch一旦碰到第一次case匹配,程序就会跳转到这个标签位置
开始顺序执行以后所有的程序代码,而不管后面的case条件是否匹配,直到碰到break语句为止.
int x = 65;
switch (x) {
case x>90&&X<100:
System.out.println("A");
break;
case X>80&&X<90:
System.out.println("B");
break;
case X>70&&X<80:
System.out.println("C");
break;
default:
System.out.println("垃圾");
}
3.3循环语句for、 while、 do/while
1.循环语句 — while
while (条件表达式)
{
执行语句块
}
int x=1;
while(x<11){
System.out.println("x="+x);
x++;
}
2.循环语句 — do…while 至少会执行一次循环
语法格式
do
{
执行语句块;
} while(条件表达式 );
int x=3;
do{
System.out.println("x="+x);
x++;
} while(x<3);
3.循环语句 — for
语法格式
for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
执行语句块
}
int i=0;
for(i=0;i<a.length;i++) {
System.out.println(a[i]);
4.循环的中断语句
循环的中断语句 — break 、continue
中断语句
多重循环中可以使用标号,指定中断的具体循环
在使用循环语句时,只有循环条件表达式的值为false时,才能结束循环。有时,我们想提前中断循环,要实现这一点,只需要在循环语句块中添加break或continue语句
5.中断语句 — break
break语句用于终止某个语句块的执行。用在循环语句体中,可以强行退出循环。
“break;”语句:可以出现在while、do…while、for、switch语句体中。
“break label”语句 :可以出现在任何语句体中。多数还是使用在循环中。
6.中断语句 — continue
continue语句用在循环语句体中,用于终止某次循环过程,跳过循环体中continue语句下未执行的循环,开始下一次循环过程
“continue;” 语句:只能出现在循环语句while、do…while、for中
7.循环语句 — 死循环
for(int x=1;;x++)
{
System.out.println("x="+x);
}