一、Java程序概述
1、特性
简单性、高性能、编译性、解释性、分布式处理、健壮性、安全性、面向对象、 开源、跨平台
2、
3、JDK、JRE、JVM
JDK:Java开发工具包
包含:JAVA开发工具(jdkin)
基础开发库(jdkjrelib t.jar)
基础开发库的源码(jdksrc.zip)
Java SE 开发工具包的 javac命令负责编译应用程序
java:java解释器,用于执行Java应用程序
JRE: Java运行时环境
JVM: 负责加载.class并运行.class文件
4、
二、变量、数据类型和运算符
1、标识符:
由字母、数字、下划线(_)、美元符($)组成,但不能包含 @、%、空格等其它特殊字符
不能以数字开头
2、变量
变量名必须是一个有效的标识符
变量名不可以使用java关键字
变量名不能重复
3、数据类型
3.1 基本数据类型
类型转换:
小到大,直接转 大到小,强制转 浮变整,小数没
低 ------------------------------------> 高
byte,short,char→ int→ long→float→double
3.2 引用数据类型 :类、接口、数组
4、运算符
int a = 1;
System.out.println(“*************”);
System.out.println(a++);//打印结果是1,打印完以后再变化,自增成2
System.out.println(a);
int b = 1;
System.out.println(++b);//打印结果是2,因为符号在前,先自增
int c = 1;
System.out.println(c–);//打印结果是1,符号在后,先打印,再自减
System.out.println©;//自减过后变成了0
int d = 1;
System.out.println(–d);//打印结果是0,符号再前,先自减再打印
//因为受之前代码的影响,c的初始值是0
System.out.println(–c-c-c–);//-1-(-1)-(-1)=-1+1+1=1
System.out.println©;//-2
5、数据的输入和输出
1)数据输出
System.out.println()
System.out.print()
System.out.printf()
2)数据输入
通过Scanner类创建一个输入的类对象
Scannersc=new Scanner(System.in)
然后sc对象通过调用下列方法,读取用户输入的各种数据类型
(1)nextByte (2)nextDouble (3)nextFloat
(4)nextInt (5)nextLong (6)nextShort
(7)nextLine:该方法得到一个String的类型数据
eg:inta=sc.nextInt()
三、流程控制
1、分支结构
packageliucheng;
import java.util.Scanner;
/*本类用于判断学员分数的档位*/
public class TestScore {
public static void main(String[] args) {
//1.提示并接收学员的分数
System.out.println(“请输入你的分数:”);
int score = new Scanner(System.in).nextInt();
/*90分及以上优秀
*80-89 良好
*70-79 中等
*60-69 及格
*60分及以下 不及格 */
/**为了增强程序的健壮性,如果用户输入的数据不符合规则,就结束*/
if(score <0 || score >100 ) {
System.out.println(“输入数据不合法,请重新输入!!!”);
}else {
//2.判断分数的段位,并输出结果
if(score >= 90) {//大于90
System.out.println(“优秀!”);
//}else if(score>=80 && score <=89) {
}else if(score>=80) {//[80,90)
System.out.println(“良好!”);
}else if(score>=70) {//[70,80)
System.out.println(“中等!”);
}else if(score>=60) {//[60,70)
System.out.println(“及格!”);
}else {//小于60
System.out.println(“不及格!”);
}
}
}
}
2、switch结构
switch case 语句用来判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。 当一个case成立,从这个case向后穿透所有case,包括default,直到程序结束或者遇到break程序才结束
package liucheng;
//根据学生成绩(成绩在0~100之间)输出等级:
//当成绩大于90(含90),输出A;
//当成绩在80-90之间(含80),输出B ;
//当成绩在60-80之间(含60),输出C;
//当成绩小于60,输出D,用switch语句实现。
import java.util.Scanner;
public class SwitchTest {
public static void main(String[] args) {
System.out.println(“input your score:”);
Scanner sc=new Scanner(System.in);
int score=sc.nextInt();
switch(score/10){
case 10:
case 9:System.out.println(“A”);break;
case 8:System.out.println(“B”);break;
case 7:
case 6:System.out.println(“C”);break;
default:
System.out.println(“D”);
}
}
}
注意:
-
1、switch 语句中的变量类型可以是: byte、short、int 、char、String(jdk1.5以后支持)
-
2、switch 语句可以拥有多个 case 语句
-
3、每个 case 后面跟一个要比较的值和冒号,且此值的数据类型必须与变量的数据类型一致
-
4、当变量值与 case 语句值相等时,开始执行此case 语句的内容,执行完会判断此行代码是否有break,如果有,结束执行,如果没有,会继续向后执行穿透所有case,包括default
-
5、switch 语句可以包含一个 default 分支,该分支一般是写在switch 语句的最后
-
6、如果在default之前的case有break,则default不会执行
3、循环结构
1)for循环
package liucheng;
//编写一个Java应用程序,使用for循环输出所有能整除41580的数(包括1和其本身)。
//按照由大到小的顺序输出
//要求每行显示10个。循环变量名为i,用于统计个数的变量名为count。
public class Liucheng {
public static void main(String[] args) {
int count=0;
for(int i=41580;i>0;i–){
if(41580%i==0){
System.out.print(i+" ");
count++;
if(count%10==0)
System.out.println();
}
}
}
}
2)嵌套for循环
packageliucheng;
/**本类用于测试完成99乘法表*/
public class TestFor99Excel {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {//控制行数,打印9行
for (int j = 1; j <= i; j++) {//控制列数,i行打印i列
//System.out.println(“*”);–打印左直角三角形
//System.out.println(“2*3=6”);2–i 3–j 6–i*j
//拼接打印算式,后面拼接一个" "表示这是表格格式, 也被称作制表符
System.out.print(j+“*”+i+“=”+(i*j)+" ");
}
System.out.println();//空白行用来换行
}
}
}
3)break和continue
break: 直接结束当前循环,跳出循环体,简单粗暴
break以后的循环体中的语句不会继续执行,循环体外的会执行
注意如果是嵌套for循环,在内层循环遇到了break,只会跳出当前这一层内循环哦
continue: 跳出本轮循环,继续下一轮循环
4)while循环
先判断后执行
5)do-while循环
先执行,再判断,循环体代码保证最少执行一次
package liucheng;
//1.编写程序,读入整数并判断读入的正数和负数个数,
//输入为0时结束程序。
import java.util.Scanner;
public class Liucheng01 {
public static void main(String[] args) {
/*int num,zsum=0,fsum=0;
System.out.println(“please input some numbers:”);
Scanner sc=new Scanner(System.in);
do{
num=sc.nextInt();
if(num>0)
zsum++;
else if (num<0)
fsum++;
}while(num!=0);
System.out.println(zsum);
System.out.println(fsum);
*/
int num,zsum=0,fsum=0;
System.out.println(“please input some numbers:”);
Scanner sc=new Scanner(System.in);
while((num=sc.nextInt())!=0){
if(num>0)
zsum++;
else if (num<0)
fsum++;
}
System.out.println(zsum);
System.out.println(fsum);
}
}
6)三中循环区别
-
for:知道循环次数
-
while/do while:当循环次数不确定时
-
while:先判断,不符合规则,不执行代码
-
do while:代码最少被执行一次,再去判断,符合规则,再次执行代码
四、数组
数组Array,标志是[ ] ,用于储存 多个相同类型数据 的集合
1、一维数组
1)创建数组
-
动态初始化
-
int[] a=new int[5];
-
静态初始化
-
int[] b = new int[]{1,2,3,4,5};
-
int[] c = {1,2,3,4,5};
数组名是个引用类型的变量,它保存着的是数组的地址,不是数组中的数据
package array;
//有一个数列:8,4,2,1,23,344,12
//循环输出数列的值
//求数列中所有数值的和
//猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数
import java.util.Arrays;
import java.util.Scanner;
public class Array {
public static void main(String[] args) {
int a[]= {8,4,2,1,23,344,12},sum=0;
for(int i=0;i<a.length;i++) {
System.out.print(a[i]+" ");
sum+=a[i];
}
System.out.println("sum is "+sum);
Arrays.sort(a);//对数组进行排序
for(int i=0;i<a.length;i++)
System.out.print(a[i]+" ");
int b,c=0;
boolean x=false;//用Boolean语句判断
System.out.println(“请输入一个数”);
Scanner s=new Scanner(System.in);
int d=s.nextInt();
for (int i=0;i<a.length;i++){
b=a[i];
if (d==b){
x=true;
break;
}
}
if (x){//只有Boolean为true的时候if