Java第一篇基础知识复习
2.1.java的基本语法
Java中的程序代码都必须放在一个类中,类需要使用class关键字定义
1.Java中的程序代码可分为结构定义语句和功能执行语句,其中,结构定义语句用于声明一个类或方法,功能执行语句用于实现具体的功能。每条功能执行语句的最后都必须用分号(;)结束。
System.out.println("这是第一个Java程序!");
2.Java语言严格区分大小写。例如,定义一个类时,computer和computer是两个完全不同的符号
3.虽然Java没有严格要求,用什么样的格式来编排程序代码,但是出于可读性的考虑,应该让自己编写的程序代码,整齐美观,层次清晰
4. Java程序中一句连续的字符串不能分开在两行中书写。
如果为了便于阅读,想将一个太长的字符串分在两行中书写,可以先将这个字符串分成两个字符串,然后用加号将这两个字符串连起来,在加号处断行。
Java中的注释
在编写程序时为了使代码与阅读,通常会在实现功能的同时为代码写一些注释。注释是对程序的某个功能或某行代码的解释,说明它是在Java源文件中有效,在编译程序时编译器会忽略这些注射信息,我会将其注释到class字节码文件中去。
截图
Java中的注释有三种类型,具体如下:
单行注释:通常用于对程序中的某一行代码进行解释,用符号“//”,“//”后面为被注释的内容。
多行注释:顾名思义就是在注释中的内容可以为多行,它以符号“/*”开头,以符号“*/”结尾。
文档注释:以“/**”开头,并在注释内容末尾以“*/”结束。
Java中的标识符
在编程过程中,经常需要在程序中定义一些符号来标记一些名称,如:包名、类名、方法名、参数名、变量名等,这些符号被称为标识符。
标识符可以由任意顺序的大小写字母、数字、下划线、(_)和美元符号($)组成,但不能以数字开头,不能是Java中的关键字。
定义标识符还应对应一下规则:
- 包名所有字母一律小写。例如:cn.itcast.test。
- 类名和接口名每个单词的首字母都要大写。如AeeayList、lterator。
- 常量名所有字母都要大写,单词之间用下划线连接。例如:DAY_OF_MONTH。
- 变量名和方法名的第一个单词首字母小写,从第二个单词开始每个单词首字母大写。例如:lineNumber、getlineNumber。
- 在程序中,应该尽量使用有意义的英文单词来定义标识符,使得程序便于阅读。例如使用userName表示用户名,password表示密码。
Java中的关键字
关键字是编程语言里事先定义好并赋予了特殊含义的单词,也称作保留字。和其他语言一样,Java中保留了许多关键字,例如,class、public等,
Java中常量
常量就是在程序中固定不变的值,是不能改变的数据。
在Java中,常量包括整型常量、浮点数常量、布尔常量、字符常量等
1、整型常量
整型常量是整数类型的数据,它的表现形式有四种,具体如下:
二进制:由数字0和1组成的数字序列,如:00110101。
八进制:以0开头并且其后由0~7范围(包括和7)内的整数组成的数字序列如:0342。
十进制:由数字0~9范围(包括和9)内的整数组成的数字序列。如:198。整数以十进制表示时,第一位不能是0,0本身除外
十六进制:以ox或者ox开头并且其后由0~9、A~F(包括0和9、A和F)组成的数字序列,如0x25AF。
2、浮点数常量
浮点数常量就是在数学中用到的小数,分为float单精度浮点数和double双精度浮点数两种类型。其中,单精度浮点数后面以F或f结尾,而双精度浮点数则以D或d结尾。当然,在使用浮点数时也可以在结尾处不加任何的后缀,此时虚拟机会默认为double双精度浮点数。浮点数常量还可以通过指数形式来表示。具体示例如下:
2e3f 3.6d 0f 3.84d 5.022e+23f
3 、字符常量
字符常量用于表示一个字符,一个字符常量要用一对英文半角格式的单引号 (") 引起来,它可以是英文字母、数字、标点符号、以及由转义序列来表示的特殊字符。具体示例如下:
'a' '1' '&' '\r' '\u0000'
上面的示例中,"\u0000表示一个空白字符,即在单引号之间没有任何字符。之所以能这样表示是因为,Java采用的是Unicode字符集,Unicode字符以\u开头,空白字符在Unicode码表中对应的值为\u0000'
4.字符串常量
字符串常量用于表示一串连续的字符,一个字符串常量要用一对英文半角格式的双引号(" ")引起来,引号要用英文符号。具体示例如下:
"HelloWorld" "123" "Welcome\ n XXX" " "
一个字符串可以包含一个字符或多个字符,也可以不包含任何字符,即长度为零。
5.布尔常量
布尔常量即布尔型的两个值true和false,该常量用于区分一个事物的真与假。
6.null常量
null常量只有一个值null,表示对象的引用为空。
2.2Java中的变量
变量的定义
在程序运行期间,随机可能产生一些临时数据,应用程序会将这些数据保存在一些内存单元中,每个内存单元都用一个标识符来标识。这些内存单元我们称之为变量,定义的标识就是变量名,内存单元中存储的数据就是变量的值。
右边的代码中,第一行代码的作用是定义了两个变量x和y,也就相当于分配了两块内存单元,在定义变量的同时为变量x分配了一个初始值0,而变量y没有分配初始值,变量x和y在内存中的状态如图所示。
变量的数据类型
Java是一门强类型的编程语言,它对变量的数据类型有严格的限定。在定义变量时必须声明变量的类型,在为变量赋值时必须赋予和变量通一种类型的值,否则程序会报错。
1. 整数类型变量
- 用来存储整数数值,即没有小数部分的值。
- 整数类型分为4种不同的类型:字节型(byte),短整型(short),整型(int)和长整型(long)。
- 占用空间指的是不同类型的变量分别占用的内存大小。
- 取值范围是变量存储的值不能超出类型的范围,如果超出取值范围将会报错。
long类型:
当定义整数常量的时候,一般用long类型在数值后面用加字母“L”(或小写“l”)。
2.浮点数据类型
- 浮点数类型变量用来存储小数数值。
- 浮点数类型分为两种:单精度浮点数(float),双精度浮点数(double),double型所表示的浮点数比float型更精确。
- float在为一个float类型的变量赋值时需要注意一点。所复制的后面一定要加上字母“F”(或“f”),而为double类型的变量赋值时,可以在所复制的后面加上字母“D”(或“d”), 也可不加。
- 在程序中也可以为一个浮点类型变量赋予一个整数数值;但是一个整数不可以赋予一个浮点类型。
3.字符类型变量
用于存储一个单一字符,在Java中用char表示。
每个char类型的字符变量都会占用两个字节。
赋值时要用英文半角格式的单引号(' ')把字符括起来,如'a'。
也可以赋值为0~65535范围内的整数。计算机会自动将这些整数转化为所对应的字符,如数值97对应的字符为'a'。
4.布尔类型变量
布尔类型变量用来存储布尔值,在Java中用boolean表示,该类型的变量只有两个值,即true和false。示例如下:
变量,数据类型以及赋值,就构成了变量定义的三要素。
变量的类型转换
当把一种数据类型的值赋给另一种数据类型的变量时,需要进行数据类型转换。
根据转换方式的不同,数据类型转换可分为两种:自动类型转换和强制类型转换。(布尔类型不包括)
声明:
布尔类型不参与其中的转换,因为我们说过布尔类型的值只有两个值,所以它不能和其他类型混在一起使用要显式地进行声明
1.自动类型转换
也叫隐式类型转换,指的是两种数据类型在转换的过程中不需要显式地进行声明。
第一是两种数据类型彼此兼容,
第二是目标类型的取值范围大于源类型的取值范围。
byte b = 3:.int x= b;
// 程序把 byte类型的变里b转换成了int 类型,无须特殊声明
自动类型转换就是把小的转换成大的数
(1) 整数类型之间可以实现转换,如byte类型的数据可以赋值给short、int、long类型的变量,short、char类型的数据可以赋值给intlong类型的变量,int类型的数据可以赋值给long类型的变量(2) 整数类型转换为float类型,如byte、char、short、int类型的数据可以赋值给float类型的变量。
(3) 其它类型转换为double类型,如byte、char、short、int、longfloat类型的数据可以赋值给double类型的变量。
2.强制类型转换
强制类型转换也叫显式类型转换,指的是两种数据类型之间的转换需要进行显式地声明
当两种类型彼此不兼容,或者目标类型取值范围小于源类型时,自动类型转换无法进行,这时就需要进行强制类型转换。
强制类型转换的格式如下所示:
目标类型 变量 =(目标类型)值
(注意)在对变量进行强制类型转换时,会发生取值范围较大的数据类型向取值范围较小的数据类型的转换,如将一个int类型的数转为byte类型,这样做极容易造成数据精度的丢失。
变量的作用域
变量需要在它的作用范围内才可以被使用,这个作用范围称为变量的作用域。
在程序中,变量一定会被定义在某一对大括号中,该大括号所包含的代码区域便是这个变量的作用域。如果超出大括号范围,就会无效。(变量的作用域在编程中尤为重要)
双引号内部的是直接输出的,+就是说出多个内容起个连接作用,x表示x变量的值
2.3java中的运算符
算术运算符
算术运算符就是用来处理四则运算的符号,这是最简单,最常用的运算符号。
- 在进行自增(++)和自减(--)的运算时,如果运算符放在操作数的前面则是先进行自增或自减运算,再进行其他运算。反之,如果运算符放在操作数的后面。则是先进行其他运算再进行自增或自减运算。
- 在进行除法运算时,当除数和被除数都为整数时,得到的结果也是一个整数。如果除法运算有小数参与,得到的结果也是一个小数。
- 在进行取模(%)运算时,运算结果的正负取决于被模数(%左边的数)的符号,与模数(%右边的数)的符号无关。
赋值运算符
赋值运算符的作用就是将常量,变量或表达式的值赋给某一个变量,表中列出Java中赋值运算符及用法
1. 在Java中可以通过一条赋值语句对多个变量进行赋值
2. 除了“=”,其他都是特殊的赋值运算符,
在为变量赋值时,当两种类型彼此不兼容,或者目标类型取值范围小于源类型时,需要进行强制类型转换。在使用+=,-=,*=,/=,%=运算进行赋值时,强制类型转换自动完成,程序不需要做任何显式地声明。
比较运算符
比较运算符用于两个数值或变量进行比较,结果就是一个布尔值,即true或false
比较运算符在使用时需要注意一个问题,不能将比较运算符“==”误写成赋值运算符“=”。
逻辑运算符
逻辑运算符用于对布尔型的数据进行操作,其结果仍是一个布尔型。
在使用逻辑运算符的过程中,需要注意以下几个细节:
(1)逻辑运算符可以针对结果为布尔值的表达式进行运算。如:x >3 &&y!=0。
(2)运算符“&”和“&&”都表示与操作,当且仅当运算符两边的操作数都为true时,其结果才为true,否则结果为false。当运算符“&”和“&&”的右边为表达式时,两者在使用上还有一定的区别。在使用“&”进行运算时,不论左边为true或者false,右边的表达式都会进行运算。如果使用“&&”进行运算,当左边为false时,右边的表达式不会进行运算,因此“&&”被称作短路与。
(3) 运算符“”和“|”都表示或操作,当运算符两边的操作数任何一边的值为true时,其结果为true,当两边的值都为false时,其结果才为false同与操作类似,“I1”表示短路或,当运算符“1”的左边为true时,右边的表达式不会进行运算
(4)运算符“^”表示异或操作,当运算符两边的布尔值相同时 (都为true或都为false),其结果为false。当两边布尔值不相同时,其结果为true。
与符号两边是真其整体结果就是真,或符号运算符只要有一者为真,结果就为真。非符号非真即假,非假即真。异或符号相同为假不同为真,短路与 当第一个表达式为假时则不会去判断第二个表达式,直接输出结果。
运算符的优先级
在对一些比较复杂的表达式进行运算时,要明确表达式中所有运算符参与运算的先后顺序,把这种顺序称作运算符的优先级。
案例代码:
/** 商城库存清单案例* 变量的形式对商品的数据保存* 品牌,尺寸大小,价格,配置,库存数量* 三个商品 苹果,thinkpad,华硕* * 计算出总的库存数,和商品的总金额*/
public class Souhn {public static void main(String[] args) {// TODO Auto-generated method stub//苹果笔记本电脑String macBrand = "MacBookAIR";double macSize = 13.3;double macPrice = 5998.99;String macConfig = "i5处理器4GB内存128GB固体硬盘";int macCount = 5;//联想Thinkpad笔记本电脑String thinkpadBrabd = "ThinkpadT450";double thinkpadSizs = 14.0;double thinkpadPrice = 5999.99;String thinkpadConfig = "i5处理器4GB内存500G硬盘";int thinkpadCount = 10;//华硕笔记本电脑String ASUSBrand = "ASUS-FL5800";double ASUSSize = 15.6;double ASUSPrice = 4999.50;String ASUSConfig = "i7处理器4G内存128G固态硬盘";int ASUSCount = 18;//列表的顶部System.out.println("------------------------------商城库存清单------------------------------");System.out.println(" 品牌型号 尺寸 价格 配置 库存数");//列表的中部System.out.println(macBrand + " "+macSize + " "+macPrice + " "+macConfig+" "+macCount);System.out.println(thinkpadBrabd + " "+thinkpadSizs + " "+thinkpadPrice + " "+thinkpadConfig+" "+thinkpadCount);System.out.println(ASUSBrand + " "+ASUSSize + " "+ASUSPrice + " "+ASUSConfig+" "+ASUSCount );//统计总库存数 总库存金额int totalCount = macCount + thinkpadCount + ASUSCount;double totalMoney = (macPrice*macCount)+(thinkpadPrice*thinkpadCount)+(ASUSPrice*ASUSCount);//列表底部System.out.println("---------------------------------------------------------------------");System.out.println("总库存是:"+totalCount);System.out.println("库存商品总金额:"+totalMoney);}}
结果如下:
2.4选择结构语句
if条件语句:
if语句是指如果满足某种条件,就进行某种处理,其语法格式如下:
if{条件语句}{//当条件语句为真的时候就执行代码块,当条件语句为假的时候就什么都不执行
代码块
}
if语句执行流程如下:
if…else语句
if…else语句是指如果满足某种条件,就进行某种处理,否则就进行另一种处理,语法格式如下:
f(判断条件){
执行语句1
--
}else{
执行语句2
--
}
if…else if…else语句
if…else if…else语句用于对于多个条件进行判断,进行多种不同的处理,其语法格式如下:
if(判断条件1){//为真走语句1,为假往后走
执行语句1
}else if(判断条件2){//条件为真走语句2,为假往后走
执行语句2
}
...
else if(判断条件n){
执行语句n
}else{
执行语句n+1
}
if…else if…else语句的执行流程图如下:
switch条件语句
switch条件语句也是一种很常见的选择语句。和if条件语句不同,它只能针对某个表达式的值做出判断,从而决定执行哪一段代码。
在switch条件语句中,使用 switch关键字来描述一个表达式,使用case关键字来描述和表达式结果比较的目标值,当表达式的值和某个目标值匹配时,会执行对应case下的语句, switch语句的基本语法如下:
switch(表达式){
case 目标值1:
执行语句1
break;
case 目标值2:
执行语句2
break;
……
case 目标值n:
执行语句n
break;
default:
执行语句n+1
break;
/** Switch语句*/
public class Tdshj {public static void main(String[] args) {// TODO Auto-generated method stubint week = 8;switch(week) {case 1:System.out.println("星期一");break;case 2:System.out.println("星期二");break;case 3:System.out.println("星期三");break;case 4:System.out.println("星期四");break;case 5:System.out.println("星期五");break;case 6:System.out.println("星期六");break;case 7:System.out.println("星期日");break;default:System.out.println("输入的数字不正确...");break;}}}
结果如下:
- switch语句中的表达式只能是byte、short、char、int、枚举(JDK1.5引入的)、String类型(JDK1.7引入的)的值,如注意:
- case子句中的值常量N必须是常量,而且所有case子句中的值应是不同的。
- break语句用来在执行完一个case分支后,是程序跳出switch语句,即终止 switch语句的执行。
- 在一些特殊情况下,多个不同的case值执行一组相同的操作,这时可以不用break果传入其他值,程序会报错。在使用 switch语句的过程中,如果多个case条件后边的执行语句是一样的,则该执行语句只需要书写一次即可。
2.5循环结构语句
while循环语句
while语句和if条件语句有点类似,都是根据条件判断来决定是否执行后面的代码,区别在于,while循环语句会反复进行条件判断,只要条件成立,{}内的执行语句就会执行,直到条件不成立,while循环结束。 语法结构如下:
while)循环条件){
执行语句
……
}
do…while循环语句
do…while循环语句和while循环语句功能类似,语法结构如下:
do{
执行语句
……
}while(循环条件);
for 循环语句
for 循环语句是最常用的循环语句,一般用在循环次数已知的情况下,格式如下:
for(初始化表达式;循环条件;操作表达式){
执行语句
……
}
for后面的()中包括三部分内容,初始化表达式,循环条件和表达式,它们之间用“;”分隔,{}中的执行语句为循环体
在for循环里执行都有严格的顺序限制的,第一步执行初始化表达式,第二步执行循环条件如果判断为真,执行第三步,判断为假执行第五步。第三步执行循环体。第四步执行操作表达式,然后执行第二步,第五步退出循环。
循环嵌套
嵌套循环是指一个循环语句的循环体再定义一个循环语句的语法结构。while、do…while、for循环语句都可以进行嵌套,并且它们之间也可以相互嵌套,最常见的在for循环中嵌套for循环
/** for循环(使用*打印直角三角形)*/
public class Ghj {public static void main(String[] args) {// TODO Auto-generated method stubint i,j;//定义两个循环变量for(i = 1;i<=9;i++) {//外层循环for(j = 1;j<=i;j++) {//内层循环System.out.print("*");//输出}System.out.print("\n");//换行}}}
结果如下:
跳转语句(break,continue)
跳转语句用于实现循环执行过程中程序流程的跳转,在Java中的跳转语句有break语句和continue语句
1.break语句:用在Switch条件语句和循环语句中,它的作用是终止某个case并跳转Switch结构。
2.continue语句:用在循环语句中,它的作用是终止本次循环,执行下一次循环
案例:
/** continue语句*/
public class Contiu {public static void main(String[] args) {// TODO Auto-generated method stubint sum = 0;//定义变量sum,用于记住和for(int i=1;i<=100;i++) {if(i%2==0) {//i是一个偶数,不累加continue;//结束本次循环}sum += i;//实现sum和i的累加}System.out.println(sum);}}
结果如下:
break案例:
/** break语句*/public class Hello{public static void main(String[] args) {int x=1;//定义变量x,初始化值为1while(x<=4) {//循环条件System.out.println("x="+x);//条件成立,打印x的值if(x==3) {break;}x++;//x进行自增}}
}
结果如下:
/** break语句(跳出外层循环)*/
public class Hello{public static void main(String[] args) {int i,j;//定义两个循环变量incast:for(i=1;i<=9;i++) {//外层循环for(j=i;j<=i;j++) {//内层循环if(i>4) {break incast;}System.out.print("*");//打印}System.out.println("\n");//换行}}
}
结果如下:
猜数字游戏案例:
import java.util.Random;
import java.util.Scanner;
public class Hello {public static void main(String[] args) {//1、通过RANDOM类中的nextInt(n)方法,生成一个0-9之间的随机数int randomNumber =new SecureRandom().nextInt(10);System.out.println("随机数已生成!");//2、输入猜的数字System.out.println("----请输入您猜的数字:-----");Scanner sc=new Scanner(System.in);int enterNumber=sc.nextInt();//3、通过while循环,进行猜数字对错判断while(enterNumber!=randomNumber) {//猜错了,根据结果,给出提示,接着猜数字,游戏继续if(enterNumber>randomNumber) {//如果猜大了,打印sorry,您猜大了!继续下一次循环System.out.println("sorry,您猜大了!");}else {//如果猜小了,打印sorry,您猜小了!继续下一次循环System.out.println("打印sorry,您猜小了!");}//输入猜的数字System.out.println("-----请输入您的数字:-------");enterNumber=sc.nextInt();}System.out.print("恭喜您,答对了!");}
}
结果如下:
2.6方法
目录
2.1.java的基本语法
Java中的注释
Java中的标识符
Java中的关键字
编辑Java中常量
1、整型常量
2、浮点数常量
3 、字符常量
4.字符串常量
5.布尔常量
6.null常量
2.2Java中的变量
变量的定义
变量的数据类型
1. 整数类型变量
long类型:
2.浮点数据类型
3.字符类型变量
4.布尔类型变量
变量的类型转换
1.自动类型转换
2.强制类型转换
变量的作用域
2.3java中的运算符
算术运算符
赋值运算符
比较运算符
逻辑运算符
运算符的优先级
2.4选择结构语句
if条件语句:
if…else语句
if…else if…else语句
switch条件语句
2.5循环结构语句
while循环语句
do…while循环语句
for 循环语句
循环嵌套
跳转语句(break,continue)
2.6方法
什么是方法
方法的重载
2.7数组
数组的定义
1.数组遍历
2.数组最值
3.数组排序
多维数组
什么是方法
假如在一个程序里需要重复的编写100行代码,这样程序就会变得很臃肿,可读性也非常差。所以我们需要把这100行代码抽取出来放在一个地方,在Java里面可以放在一个大括号里面,规定一个范围在这个范围里取个名字就叫做“方法”,当你想运行的时候只要拿出来用就可以了,这个时候你的程序就会变得设计的很好,代码的重复问题也得到了解决,阅读性增强,需要的时候调用那个方法即可。方法可以看作是一个完成一个功能的,具有独立性的代码的一个小片段,片段的范围就是Java中大括号里的范围。
/** 不适用方法时实现打印三个长宽不同的矩形*/
public class Ff {public static void main(String[] args) {// TODO Auto-generated method stub//下面的循环是使用*打印宽为5,高为3的矩形for(int i = 0; i<3 ; i++) {for(int j = 0;j < 5; j++) {System.out.print("*");}System.out.print("\n");}//下面的循环是使用*打印宽为4,高为2的矩形for(int i = 0; i < 2; i++){for(int j = 0; j < 4; j++) {System.out.print("*");}System.out.print("\n");}//下面的循环是使用*打印宽为10,高为6的矩形for(int i = 0;i < 6; i++){for(int j = 0;j < 10; j++) {System.out.print("*");}System.out.print("\n");}}}
结果如下:
在Java中,声明一个方法的具体语法格式如下:
修饰符 返回值类型 方法名([参数类型 参数名1,参数类型 参数名2……]){
执行语句
……
return 返回值;
}
- 修饰符:是对访问权限的限定,例如,public、static都是修饰符
- 返回值类型:用于限定方法返回值的数据类型
- 参数类型:用于限定调用方法时传入参数的数据类型
- 参数名:是一个变量,用于接收调用方法时传入的数据
- return关键字:用于结束方法以及返回方法指定类型的值
- 返回值:被return语句返回的值,该值会返回调用者
- 方法名首字母需要大写
/** 使用有返回值的方法求矩形面积*/
public class FangDing {public static void main(String[] args) {// TODO Auto-generated method stubint area = getArea(3,5);//调用getArea方法System.out.println("The area i7" + area);//输出}//下面定义了一个求矩形面积的方法,姐收两个参数,其中x为高,y为宽private static int getArea(int i, int j) {// TODO Auto-generated method stubreturn i * j;}}
结果如下:
方法的重载
案例:
/** 调用不同的方法*/
public class Fangf {public static void main(String[] args) {// TODO Auto-generated method stub//下面针对求和的方法调用int sum1 = add01(1,2);int sum2 = add02(1,2,3);double sum3 = add03(1,2);//下面的代码是打印求和的结果System.out.println("sum1="+sum1);System.out.println("sum2="+sum2);System.out.println("sum3="+sum3);}//下面的方法实现两个小数相加private static double add03(double i, double j) {// TODO Auto-generated method stubreturn i+j;}//下面方法实现了三个整数相加private static int add02(int i, int j, int k) {// TODO Auto-generated method stubreturn i+j+k;}//下面的方法实现两个数整数相加private static int add01(int i, int j) {// TODO Auto-generated method stubreturn i+j;}}
结果如下:
java 允许在一个程序中定义多个名称相同的方法,但是参数的类型或个数必须不同,(个数不一样,类型不一样,顺序不一样也是重载),这就是方法的重载。(方法名相同,但是这个参数列表不一样)重载和前面的内容没有关系,返回值没关系修饰符也没关系。只和方法名和参数列表有关系。
2.7数组
数组的定义
数组是指一组数据的集合,数组中的每个元素被称为元素,在数组中可以存放任意类型的元素,但同一个数组中存放的元素类型必须一致。
在Java中可以使用以下格式定义一个数组:
int []x=new int [100];
上述语句就相当于在内存中定义了100个int类型的变量,第一个变量的名称为x[0],第二个变量的名称为x[1],以此类推,第100个变量的名称为x[99],这些变量的初始值都是0。
在Java中,为了更方便我们获得数组的长度,提供了一个length属性,在程序中可以通过“数组名.length"的方式来获得数组的长度,即元素的个数。
当数组被成功创建后,数组元素会被自动赋予一个默认值,根据元素类型的不同,默认初始化的值也是不一样的。
在初始化数组时还有一种方式叫做静态初始化,就是在定义数组的同时就为数组的每个元素赋值。数组的静态初始化有两种方式:
1.类型[] 数组名=new类型[]元素,元素,……};
2.类型[] 数组名={元素,元素,元素,……};
案例:
/** 定义数组以及访问数组中的元素*/
public class Dmi {public static void main(String[] args) {// TODO Auto-generated method stubint[] arr;//声明变量arr = new int[100];//创建数组的容器System.out.println("arr[0]="+arr[0]);//访问数组中的第一个元素System.out.println("arr[1]="+arr[1]);//访问数组中的第二个元素System.out.println("arr[2]="+arr[2]);//访问数组中的第三个元素System.out.println("数组的长度是:"+arr.length);//输出数组的长度}}
结果如下:
1.数组遍历
在操作数组时,经常需要依次访问数组中的每个元素,这种操作叫做数组的遍历。
索引思想,操作数组中的元素,赋值还是获取值,都是依赖索引 arr[0]
索引思想:操作数组。arr[0]赋值,获取
循环:循环的变量,从0开始,每次递增。
/** for循环遍历数组*/
public class Ujs {public static void main(String[] args) {// TODO Auto-generated method stubint[] arr = {1,2,3,4,5};//定义数组//使用for循环遍历数组的元素for(int i = 0;i<arr.length;i++) {System.out.println(arr[i]);//通过索引访问元素}}}
结果如下:
2.数组最值
在操作数组时,经常需要获取数组中元素的值
在数组中会有很多个元素,我们要在众多个元素中找出数组中的最大值是谁。
3.数组排序
在操作数组时,经常需要对数组中的元素进行排序,其中冒泡排序是比较常见的一种算法。冒泡过程中不断比较数组中相邻的两个元素,较小者向上浮,较大者往下沉,整个过程和水中气泡上升的原理相似。
数组排序的过程如下所示:
- 从第一个元素开始,将相邻的两个元素依次比较,直到最后两个元素完成比较,如果第一个元素比后一个大,则交换位置。整个过程完成后,数组中最后一个元素就是最大值。(相邻的两个元素进行比较换位)(数组元素换位:临时变量)
/** 冒泡排序*/
public class Maopao {public static void main(String[] args) {// TODO Auto-generated method stubint[] arr = {9,4,5,3,7};//定义数组,赋值无序System.out.println("冒泡排序前:");pintArray(arr);//输出数组元素bubbleSort(arr);//调用排序的方法System.out.println("冒泡排序后:");pintArray(arr);//输出数组元素}//定义打印数组的元素的方法public static void pintArray(int[] arr) {//循环遍历数组的元素for(int i=0;i<arr.length;i++) {System.out.print(arr[i] + " ");//输出元素和空格}System.out.print("\n");}//定义对数组排序的方法public static void bubbleSort(int[] arr) {//定义外层循环for(int i = 0;i < arr.length - 1;i++) {//定义内层循环for(int j = 0;j<arr.length -i -1;j++) {if(arr[j]>arr[j+1]) {//比较相邻的元素//int temp = arr[j];arr[j] = arr[j+1];arr[j+1]=temp;}}}}}
结果如下:
- 除最后一个元素,将剩余的元素继续进行两两比较,过程与第一步类似,这样数组第二大的元素放在了倒数第二个位置
- 以此类推,持续对越来越少的元素重复上面的步骤,直到没有任何一个元素需要比较为止
/** 获取数组中的最大值*/
public class Rji {public static void main(String[] args) {// TODO Auto-generated method stubint[] arr = {4,1,16,3,9,8};//定义一个数组int max = getMax(arr);//调用获取最大值的方法 System.out.println("max="+max);//输出最大值}private static int getMax(int[] arr) {// TODO Auto-generated method stubint max = arr[0];//定义变量max用于记住最大值。首先保存数组中的第0个索引上的元素//下面通过一个for循环遍历数组中的元素for(int x=1;x<arr.length;x++) {if(arr[x]>max) {//比较arr[x]的值是否大于maxmax=arr[x];//条件成立,将arr[x]的值赋值给max}}return max;//返回最大值}}
运行结果:
多维数组
多维数组可以简单地理解为在数组中嵌套数组。在程序中比较常见的就是二维数组。
二维数组的定义有很多方式,如下:
int [] [] arr=new int [3] [4];
上面代码定义了一个3行4列的二维数组,结构如下:
方式二:
int [] [] arr=new int [3] [];
上述方法与第一种方法类似,只是数组中每个元素的长度不确定,采用第二种方式常见的数组结构如下:
方式三:
int [] [] arr={{1,2},{3,4,5,6},{7,8,9}};
上述方式定义的二维数组三个元素,这三个元素都是数组,分别是{1,2}、{3,4,5,6}、{7,8,9}。
通过一张图来描述方式三定义的数组结构:
二维数组的访问同样也是通过索引去访问的
/** 二维数组的使用*/
public class Dhj {public static void main(String[] args) {// TODO Auto-generated method stubint [] [] arr = new int[3] [];//定义一个长度为3的二维数组arr[0] = new int[] {11,12};//为数组的元素赋值arr[1] = new int[] {21,22,23};arr[2] = new int[] {31,32,33,34};int sum = 0;//定义变量记录总销售额for(int i =0;i<arr.length;i++) {int gropuSum = 0;//定义变量记录小组的销售额for(int j = 0;j<arr[i].length;j++) {gropuSum = gropuSum+arr[i][j];}sum = sum + gropuSum;System.out.println("第"+(i+1)+"小组销售额为:"+gropuSum+"万元");}System.out.println("总销售额为:"+sum+"万元");}}
运行结果:
随机点名案例:
/** 随机点名器* */import java.security.SecureRandom;
import java.util.Scanner;
public class Bhs {// 1、存储全班同学的姓名 创建一个存储多个同学的姓名的容器(数组)// 键盘录入每个同学的姓名,存储到数组容器中public static void addStudentName(String[]students) {//键盘录入多个同学姓名存储到容器中Scanner sc =new Scanner (System.in);for(int i=0;i<students.length;i++){System.out.println("存储第"+(i + 1)+"个姓名:");students[i]=sc.next();}
}// 2、总览全班同学姓名public static void printStudentName(String[]students) {//遍历数组,得到每个同学姓名for(int i=0;i<students.length;i++) {String name =students[i];System.out.println("第"+(i+1)+"个学生姓名:"+name);}}// 3、随机点其中一人public static String randomStudentName(String[] studrents) {//根据数组产孤独,获取随机数int index =new SecureRandom().nextInt(studrents.length);//通过随机索引从数组中获取名字String name =studrents[index];return name;}public static void main(String[]args) {System.out.println("-----随机点名器--------");String[] students=new String[3];addStudentName(students);printStudentName(students);String randomName=randomStudentName(students);System.out.println("被点到名字的同学是:"+randomName);}
}
运行结果:
Java第一篇基础知识复习相关推荐
- 【深入剖析Tomcat笔记】第一篇 基础知识储备
基础知识储备 最近突然在想,做了这么久的WEB相关,像tomcat.apache这些服务器究竟是什么东西,恰好碰到<How Tomcat Works>(中文版<深入剖析Tomcat& ...
- php百分比乘加,PHP学习笔记第一篇 基础知识
基础知识 我将php语言学习里面最最基础的部分,需要第一个学的,必须牢牢掌握的,归类到一起. 大纲 1.数据类型 2.变量 3.常量 4.操作符 5.流程控制 6.数组 7.字符串操作 8.正则 基础 ...
- [Python笔记]第一篇:基础知识
本篇主要内容有:什么是python.如何安装python.py解释器解释过程.字符集转换知识.传参.流程控制 初识Python 一.什么是Python Python是一种面向对象.解释型计算机程序设计 ...
- python知识笔记_[Python笔记]第一篇:基础知识
二.为什么要使用Python 优点: 学习成本低 开发效率高–拥有丰富而且强大的第三方库 高级语言–不用关心底层运作细节 可扩展性–Python是一门胶水语言,能于其他语言如C ,C#进行扩展 缺点: ...
- MySQL学习笔记-第一篇-基础知识与命令
目录 1 登录命令 1.1 主机域名登录 1.2 主机ip登录 2 库命令 2.1 显示库 2.2 创建数据库 2.3 删除数据库 2.4 MySQL-8.新特性 3 表命令 3.1 创建数据表 3. ...
- Java基础知识复习(一)
Java基础知识复习(一) 目录 Java简介 命名规则 八种基本的数据类型 字面量 类型转换 变量的形态 逻辑运算符 位运算 移位运算 习题知识点 目录 Java简介 Java是由Sun公司在199 ...
- java基础知识复习(上半)
java基础知识复习 java为什么被发明? Green项目的确立,应用于像电视盒一样的消费类电子产品,语言本身本身中立. java的三大版本? javaSE的定位在于客户端,只要用于桌面应用软件的编 ...
- 《Java并发编程实战》【第一部分 基础知识】
文章目录 第1章 简介 1.1 并发简史 1.2 线程的优势 1.2.1 发挥多处理器的强大能力 1.2.2 建模的简单性 1.2.3 异步事件的简化处理 1.2.4 响应更灵敏的用户界面 1.3 线 ...
- java 网络爬虫 正则表达式_【干货】Java网络爬虫基础知识
原标题:[干货]Java网络爬虫基础知识 引言 Java 网络爬虫具有很好的扩展性可伸缩性,其是目前搜索引擎开发的重要组成部分.例如,著名的网络爬虫工具 Nutch 便是采用 Java 开发,该工具以 ...
最新文章
- 面试官:如果要存ip地址,用什么数据类型比较好
- 中国各地高考难度地图:上大学最难的省份是哪里!?
- 如何使用Serilog.AspNetCore记录ASP.NET Core3.0的MVC属性
- kali用x-shell连接_良心国产工具,比Xshell好用还免费!
- Iterator(迭代器)
- Windows下使用Git配置SSH免密登录
- 51nod-1350:斐波那契表示
- python dataframe 选取字段 特别慢_从parqu读取dask dataframe列重命名速度较慢(er)
- jQuery:获取浏览器中的分辨率
- php第三方分享插件下载地址,PhpWind安装分享插件
- win7计算机个性化设置,Win7系统如何进行个性化设置 Win7系统个性化设置方法【详解】...
- 选择日期弹框html,JS——点击文本框弹出选择日期表格
- 微信小程序的bindtap和catchtap实际场景 对话框中按钮点击和对话框背景点击处理笔记...
- eclipse新建java项目隐藏了bin文件夹,只有src文件夹,解决方法
- 与MySQL的纠缠(卸载与安装)
- 【Ubuntu】普通用户修改了/etc/sudoers文件权限导致的问题
- 数据结构与算法实验6——图论 7-9 哥尼斯堡的“七桥问题”
- 打字时全部是繁体字,如何改为简体中文?
- c语言中单链表的逆置
- EXCEL表格如何实现隔行填充颜色
热门文章
- linux rm -rf删除文件,Linux rm命令详解
- 记录安讯士摄像机调试
- 微信h5游戏模板:测试问答大冒险,真假朋友大考验
- hate vs hatred
- 电脑便签程序用哪一个?电脑便签下载安装
- 百信银行:智能银行的ABC
- Eclipse Theia技术揭秘——自定义布局
- 【Pytorch】【IndexError】:invalid index of a 0-dim tensor. Use tensor.item() to convert a 0-dim ...
- QLabel将方形图片显示成圆形
- 刘俊彦北京个人演唱会成功举行 用歌声唱出音乐梦想