初识Java
一、Java
1、编写程序的工具就是计算机语言,Java就是多种语言中的一种。
二、Java变量及数据类型
2.1变量
变量:一个数据存储空间的表示。
变量名:首字母+其他位置
首字母:字母,下划线,¥,$(字、下、美、人)
其他位置:字母、数字、下划线、¥,$(字、下、美、人、数)
注意:不能使用关键字
2.2数据类型
整型
Byte<short<int<long
Long:长整型其后加(L或l):12345678L/12345678l
浮点型
Double 小数点后15~16位 双精度浮点型
Float 小数点后7~8位 单精度浮点型
Float<double
Float:需要在后面加f:23.5f
2.3运算符
1、算数运算符:
+、-、*
/:取商(5/2=2)、%:取余(5%2=1)
++:自加1。++在前,先自加再使用;++在后,先使用再自加。
--:自减1。--在前,先自减再使用;--在后,先使用再自减。
2、复合计算符,先计算再赋值。
+=、-=、*=、/=、%=、
d=7;
d/=4;
system,out.print(d);
输出1(7/4)
3、逻辑运算符
&& 与:
|| 或:
! 非:
如果第一个操作数已经能确定表达式的值,第二个操作数就不必计算了;
优先级别 ! > && > ||
4、关系运算符
== 等于
!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
5、三目运算符
int min;
min = 5 < 7 ? 5 : 7;
System.out.println(min); 5
min = 10 < 7 ? 10 : 7;
System.out.println(min); 7
6、运算顺序
单目运算符 ! ++ --,优先级别高
优先级别最低的是赋值运算符
可以通过()控制表达式的运算顺序,()优先级最高
从右向左结合性的只有赋值运算符、三目运算符和单目运算符
算术运算符 > 关系运算符 > 逻辑运算符>赋值运算符
三、选择结构
3.1 、if判定
语法
if(条件1) {
if(条件2) {
代码块1
} else {
代码块2
}
} else {
代码块3
}
例子
import java.util.Scanner;
public class chengji {
public static void main(String[] ages){
Scanner input=new Scanner(System.in);
System.out.print("输入学生成绩");
int cj=input.nextInt();
if(cj>=80){
System.out.println("良好");
}
else if(cj>=60){
System.out.println("中等");
}
else {
System.out.println("差");
}
}
}
哪个条件满足执行哪条语句。
3.2 、switch选择
语法
switch (表达式) {
case 常量 1:
语句;
break;
case 常量 2:
语句;
break;
…
default:
语句;
}
例子
import java.util.Scanner;
public class ss {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.print("输入0~10其中的号码");
int mingCheng = input.nextInt();
switch (mingCheng){
case 1:
System.out.println("参加麻省理工大学组织的1个月夏令营");
break;
case 2:
System.out.println("奖励惠普笔记本电脑一部");
break;
case 3:
System.out.println("奖励移动硬盘一个");
break;
case 4:
System.out.println("参加山东理工大学组织的2个月夏令营");
break;
case 5:
System.out.println("奖励联想拯救者电脑一部");
break;
case 6:
System.out.println("奖励女朋友一个");
break;
default:
System.out.println("不好意思,没有任何奖励 ");
break;
}
}
}
Switch 表达式中可以填int、short、byte、char、枚举类型、String
每个case后不要忘记写break;Case后的常量值不能相同;default块顺序可以变动,但要注意其执行顺序;通常,default块放在末尾,也可以省略。
3.3 、switch与if的区别
相同点:
· 都是用来处理多分支条件的结构
不同点:
· switch选择结构只能处理等值条件判断的情况
· 多重if选择结构没有switch选择结构的限制,特别适合某个变量处于某个连续区间时的情况
四、循环结构
4.1 、while
语法
while ( 循环条件 ) {
循环操作
}
特点:先判断,再执行
例子
int i = 1;
while ( i <= 100 ) {
System.out.println("第" +i+ "遍写:
好好学习,天天向上!");
i ++;
}
4.2 、do-while
语法
do {
循环操作
} while ( 循环条件 );
特点:先执行,再判断
例子
int i = 1;
do {
System.out.println("第" +i+ "遍写:
好好学习,天天向上!");
i ++;
}while ( i <= 100 )
4.3 、for
语法
for ( 参数初始化; 条件判断; 更新循环变量) {
循环操作
}
例子
for ( int i = 0 ; i < 100 ; i++ ) {
System.out.println("好好学习!");
}
4.4 、foreach
语法
For(元素类型int 元素变量n : 遍历对象a){
输出语句;
}
例子
for (int n : a) {
System.out.print(n+" ");
}
4.5 、区别
区别1:语法
区别2:执行顺序
while 循环:先判断,再执行
do-while循环:先执行,再判断
for循环:先判断,再执行
区别3:适用情况
循环次数确定的情况,通常选用for循环
循环次数不确定的情况,通常选用while或do-while循环
foreach适用于遍历不确定数量的对象,后续会学习到。
五、多重循环
5.1 、循环语法
while(循环条件1){ //外循环
//循环操作1
while(循环条件2){ //内循环
//循环操作2
}
}
*****************************************************************************
while(循环条件1){
//循环操作1
for(循环条件2){
//循环操作2
}
}
注意
1、各循环可互相嵌套;
2、一般不超过三层;
3、外层循环变量变化一次,内层循环变量要变化一遍。
例子
public class Test4 {
/**
* 九九乘法表
*/
public static void main(String[] args) {
for (int i = 1; i <=9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(i+"*"+j+"="+i*j+"\t");
}
System.out.println();
}
}
}
5.2 、跳出循环break和continue
while(…) {
……
……
continue; //只能用在循环里,跳过循环体中剩余的语句而执行下一次循环。
……
……
}
*****************************************************************************
while(…) {
……
……
break; //只能用在循环里,结束循环并跳出。
……
……
}
使用场合
break常用于switch结构和循环结构中
continue一般用于循环结构中
作用(循环结构中)
break语句终止某个循环,程序跳转到循环块外的下一条语句
continue跳出本次循环,进入下一次循环
双重循环亦如此
六、数组
6.1 、数组定义
数组是一个变量,存储相同数据类型的一组数据。
数组基本要素
标识符
数组元素
元素下标:从0开始
元素类型
6.2 、数组使用
数组四步走
1.声明数组
2.分配空间
3.赋值
4.处理数据
数据类型【】 数据名=new 数据类型【大小】; //声明长度,大小
数据类型【】 数据名={a,b,c,d,e,f}; //边声明边赋值
常见错误:
1、没有写明数组大小;
2、数组越界,数量超出;
3、创建数组并赋值的方式必须在一条语句中完成。
最大最小值:
通过循环比对,达到目的跳出并输出;
public static void main(String[] args) {
int[] a={1,2,3,4,5,6,7,8,9};
int b=0;
for (int i = 0; i < a.length; i++) {
if (b<a[i]) {
b=a[i]; //求最大值
continue;
}
}
System.out.print(b);
}
数组插入数值(前提是数组是有序数组):
public static void main(String[] args) {
int[] scores = {99,85,82,63, 60,0};
Scanner input = new Scanner(System.in);
System.out.println("请输入要插入的数");
int num =input.nextInt();
//找需要插入数据的位置
int index=0;
for (int i = 0; i < scores.length; i++) {
if(num>scores[i]){//确定第一次满足时的下标
index=i;
break;
}
}
System.out.println("可以将数据插入的位置是"+index);
//移位
for (int i =scores.length-1; i>index; i--) {
//进行后移
scores[i]=scores[i-1];
}
System.out.println("移位完成");
//给找到的位置进行赋值
scores[index]=num;
//查看数组所有元素
for (int a : scores) {
System.out.print(a +" ");
}
}
由于数组存在下标,所以增加,删除较复杂;
查询,修改方便。
6.3 、数组排序
public static void main(String[] args) {
int[] scores = {99,85,82,63, 60,0};
Arrays.sort(scores);
//Arrays:java.util包提供的工具类,sort()方法: 对数组进行升序排列
for (int a : scores) {
System.out.print(a +" ");
}
}
冒泡排序速记口诀(升序)
N 个数字来排队
两两相比小靠前
外层循环 N-1
内层循环 N-1-I
public static void main(String[] args) {
int[] scores = { 44, 56, 22, 77, 12, 7 };
// 排序
// Arrays.sort(scores); //升序
// 冒泡
for (int i = 0; i < scores.length - 1; i++) {
for (int j = 0; j < scores.length - 1 - i; j++) {
if (scores[j] > scores[j + 1]) { //升序
int temp = scores[j];
scores[j] = scores[j + 1];
scores[j + 1] = temp;
}
}
}
for (int score : scores) {
System.out.print(score + "\t");
}
}