Java语言中学习数组运算符流程控制的一些理解
Posted K白心
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java语言中学习数组运算符流程控制的一些理解相关的知识,希望对你有一定的参考价值。
一、数组
1、数组的概念及作用
数组是相同数据类型的元素的集合;
数组本身是引用数据类型,即对象。但是数组可以存储基本数据类型,也可以存储引用数据类型。
例如:
int [] a = new int [] {1,2,3,4,5,6,};
String [] s = new String [] {"小兔","小小兔","小小小兔",} ;
Employee [] e = Employee [10];(Employee是自定义类)。
2、数组的声明
数组的声明有两种方式:
数据类型 [] 数组名字 例如:int [] a;
数据类型 数组名字 [] 例如:int a [];
注:在JAVA语言中两种声明方法没有任何区别,但是建议大家使用第一种,避免混淆a的数据类型。
数组在声明后还只是一个空指针,不能使用,要使用必须创建。
3、数组的创建
数组的创建有三种方式:
1)//声明数组的同时,根据制定的长度分配内存,但数组中元素值都为默认的初始化值
char [] chAry = new char [10];
2)//声明数组并分配内存,同时将其初始化
int [] ary1 = new int [] {1,2,3,4,5};
3) //与前一种方式相同,仅仅只是语法相对简略
int [] ary2 = {1,2,3,4,5};
从另一角度,数组创建可以分为动态和静态两种
1)动态创建数组(没有为元素赋值,可以结合for循环进行赋值)
char [] chAry = new char [10];
2)静态创建数组,在创建的时候,即为每个元素赋初值
int [] ary1 = new int [] {1,2,3,4,5};
数组的长度:length属性
int [] b1 =new int [] {1,2,3,4,5,6,7};
System.out.println(b1.length);
注:数组的长度是属性,String的长度是length();
创建数组的时候必须指定数组长度,而且一经定义则不允许改变。
数组长度虽然是7,但是在内存中实际給8个位置,另一个存储7.
数组之间的赋值
在Java中,语法上可以将数组的值赋给另一个数组,但实际得到的效果是两个数组引用指向同一块内存。
int [] ary1 = {1,2,3,4,5,};
int [] ary2;
ary2 = ary1:
上面两个数组的引用指向同一块内存。
public class ArrayDemo {
public static void main(String[] args) {
int[] ary1 = {2, 4, 6, 8, 10}; //声明并初始化数组1
int[] ary2; //声明数组2 ary2 = ary1; //将数组1赋值给数组2
ary2[3] = 1024; //通过数组2修改其中一个元素的值
//打印出数组1中的元素 System.out.println("数组1中的元素:");
for (int i = 0; i < ary1.length; i++) {
System.out.println(ary1[i]);
}
//打印出数组2中的元素 System.out.println("数组2中的元素:");
for (int i = 0; i < ary2.length; i++) {
System.out.println(ary2[i]);
}
}
}
运行结果:数组1中的元素 2 4 6 for循环输出为1024
数组2中的元素 2 4 6 for循环输出为1024
二、运算符
按照功能分,Java中的运算符可以分为四类
算术运算符
位运算符
比较运算符
逻辑运算符
除了== 及 !=、+外,其他运算符都是针对基本数据类型进行运算,==及!=可以对基本数据类型及引用类型进行运算,+还可以对字符串进行连接操作。
1、算术运算符
单目:+(取正) -(取负) ++(自增1) --(自减1)
双目:+ - * / %(取余)(+还可以连接字符串)
三目:a > b ? ture:false
说明:当a大于b的时候,为true(也就是冒号之前的值),否则为false;这整个运算符包括一个关系运算符(可以是“>”"<""!="等等),一个“?”,一个“:”,冒号前后需要有两个表达式或者是值或者是对象。
2、位运算符
位运算符:(先转化成二进制再进行运算)
与(&)、非(~)、或(|)、异或(^)
& 全部是1,运算结果是1,其他的都是0;
~ 按位取反+1,加1后取反(取负);
| 只要有一个是1,结果就是1;
^ 相同的结果是0,不同的结果是1;
移位运算符:<<、 >>(有符号右移)
左移1位相当于乘以2,右移1位相当于除以2,比乘除运算效率更高
例如:
int a = 8, c;
c = a >> 2;
原来的: (8的二进制值是) 0000 1000
移动后: (c的值为2) 0000 0010
3、比较运算符
==(等于号) ,<(小于号),>(大于号),<=(小于等号),>=(大于等号),!=(不等号);
==与!=比较基本数据类型是比较值,比较引用类型是虚地址;
除了== !=外,都只能比较基本数据类型;
注:比较运算符的返回值为ture或false。
4、逻辑运算符
用于连接两个boolean类型的表达式
&& (双与) 、|| (双或) 、&(与)、|或)、^(异或)、!(非运算)
注意事项:
1)&&与&的运算结果是相同的,对于&而言无论左边为什么值,右边都参与运算;
对于&&来说,只要左边为false右边就不再运算,直接返回false。
2)||与|的运算结果是相同的,对于|而言无论左边为什么值,右边都参与运算;
对于||来说,只要左边为true右边就不再运算,直接返回true。
3)&&和||可以理解为物理上的短路,实际中多用&&及||。
三、Java中的流程控制
顺序流程
分支流程
循环流程
1、顺序流程
输入-----运算处理-----输出
2、分支流程
1)条件语句if....
条件表达式可以是任何一种逻辑表达式;
如果表达式值为true,则执行花括号的内容后,再执行后面的语句;
如果表达的值为false,则直接执行后面的语句;
如果,大括号只有一条语句,则可以省略大括号(推荐不省略);
2)条件语句 if..... else.....
语法格式—if.....case....
if(表达式){
执行语句块1
}else{
执行语句块2
}
如果表达式值为false,则执行else的语句块;
3)条件语句 — switch....case (case的取值是具体的一个值,不能有重复的,是常量)
语法格式
switch(表达式){
case取值1:语句块1
....
case取值n:语句块n
default:语句块n+1
}
表达式的值只可以接受int、byte、char、short型、枚举,JDK1.6以后String也可以,不接受其他类型的值,不允许有重复的case取值;
switch一旦碰到第一次case匹配,程序就会跳转到这个标签位置;
开始顺序执行以后所有的程序代码,而不管后面的case条件是否匹配,直到碰到break语句为止;
3、循环流程
1)循环语句— while(循环体在whlie中)
while(条件表达式){
执行语句块;
}
2)循环语句 — do…while 至少会执行一次循环(循环体在do中)
do{
执行语句块;
}whlie(条件表达式);
3)循环语句 — for
for(初始化表达式;循环条件表达式;循环后的操作表达式){
执行语句块;
}
4、循环的中断语句
中断语句
多重循环中可以使用标号,指定中断的具体循环
在使用循环语句时,只有循环条件表达式的值为false时,才能结束循环。有时,我们想提前中断循环,要实现这一点,只需要在循环语句块中添加break或continue语句
1)中断语句 — break
break语句用于终止某个语句块的执行。用在循环语句体中,可以强行退出循环(整个循环)。
"break;"语句:可以出现在while、do…while、for、switch语句体中。
"break label”语句 :可以出现在任何语句体中。多数还是使用在循环中。
2)中断语句 — continue
continue语句用在循环语句体中,用于终止某次循环过程,跳过循环体(跳出本次循环)中continue语句下未执行的循环,开始下一次循环过程。
"continue;” 语句:只能出现在循环语句while、do…while、for中。
以上是关于Java语言中学习数组运算符流程控制的一些理解的主要内容,如果未能解决你的问题,请参考以下文章
大一C语言学习笔记---自省篇--流程控制;break,continue,return间的异同;数组应用到循环语句中需要注意的问题;++i 和 i++的异同等。