1.JAVA的介绍
1.1Java发展史
-
Java是由C++发展而来,秉持着简单的设计理念。
-
Java主要的应用领域:
-
Java SE:应用于桌面开发软件;
-
Java EE:用来开发服务端程序;又可以用来开发Android系统,大数据等等
-
Java的编译方式区别于其他语言,Java在编译过程中经过编译和运行两个步骤。
-
编译:在程序运行前,现将代码编译成机器码。
-
解释:在程序运行时,逐行将代码解释成机器码并运行。
-
Java的运行方式:先编译,后运行。其过程为:在程序运行前,先将代码编译成字节码,在程序运行时,逐行将代码解释为机器码并运行。
-
为了更好地理解编译和解释的流程,以下列流程进行描述:
-
编译的运行机制:
源代码 → (编译) → 字节码 → (运行) → 计算机 -
解释的运行机制:
源代码 → (运行) → 计算机{ 字节码 → (解释)→ 机器码 } -
JAVA的运行机制:
源代码 → (编译) → 字节码 → (运行) → 计算机{ 字节码 → (解释)→ 机器码 } -
Java运行机制的优点:比解释更快,比编译更省事。
1.2Java的开发工具
- JDK:Java Development kit
- JRE:Java Runtime Environment, JRE包含于JDK
- Java Virtual Machine:Java虚拟机,包含所需的各种类库,工具等等
1.3Java开发
-
JDK下载:oracle.com(官网) ->JAVA->Java SE-> Downloads-> windows-x64.exe. 安装完成后,在环境变量中配置环境,如:Path: C:\Program Files\java\jdk\bin
测试是否安装成功: -
首先创建Java的源程序,其次编写Java源代码,最后编译Java源程序。
-
编译命令:javac,运行命令为:java。
例如:首先创建一个First.java文件,利用 javac First.java进行编译得到First.class,利用java First运行。 -
Java的固定格式如下:
public class First {
public static void main (String[] args) {
System.out.println("Hello World!");
}
}
1.4Java的集成开发环境IDE
- Eclipse:由IBM公司开发的软件。利用java语言开发,可以编写java/C/C++,PHP,JavaScript等语言,且源代码时开发的,它具有体积少,内存小的优点。
- IntelliJ IDEA:由JetBrains公司开发的软件,是目前最好的java开发工具。它具有漂亮的页面,强调试工具和智能编码的优点。
1.5变量
-
变量是指代内存中的一小块空间。数据类型用于指导计算机为这块内存分配多大的空间。注意:
-
没有声明的变量不能使用;
-
未初始化的变量不能使用;
-
存储的数据需要满足数据类型;
-
变量的命名:
-
标识符是报名,类名,方法名,变量的统称。变量不能命名为标识符。
-
不可以为字母,数字,“-”,“$”组成。
-
不能以数字开头
-
不可以为java关键字。
-
实例说明
/*
* 这是一个关于变量的示范
* 关于变量的声明,初始化,使用和命名的介绍
* */
public class VariableDemo {
public static void main(String[] args) {
//1.变量的声明
int a;
int b,c;
//2.变量的初始化
a=10;
b=20;
int d=30;
int e=40, f=50;
//3.变量的使用
//System.out.println(n);
//System.out.println(c);
//a=3.14;
System.out.println(a);
System.out.println(b);
//4.变量的命名
//int a#;
//int 2b;
//int class;
int score;
int javaScore;
int myJavaScore;
}
}
1.6基本数据类型
-
八大基本数据类型
-
整数类型:byte(8位), short(16位), int(32位), long(64位);
-
浮点数类型:float(32位), double(64位);
-
字符类型:char(16位);
-
布尔类型:bool;
-
取值范围
-
byte(8位): -128~127
-
short(16位): 32768~32767;
-
int(32位):-2 ^ 32 ~ 2 ^ 32 - 1;
-
long(64位):-2 ^ 64 ~ 2 ^ 64 - 1;
-
数据类型转化
-
转化的前提:除了bool类型外,其余其中类型均为数字类型;
-
转化的关键:与数据类型的取值范围有关系;
-
转化的方式:自动类型转换,强制类型转换;
-
实例:
/*
* 这是一个关于整数类型,浮点数类型,字符类型,布尔类型的示范
* */
public class DataTypeDemo {
public static void main(String[] args) {
//直接写出的数为直接数
System.out.println(9);
System.out.println(3.14);
//1.int 直接写出的整数为int类型
//赋值如果超过取值范围,编译将会报错
//int i=3000000000;
//运算如果超过取值范围,编译将会报错
int i=2147483647; //i在计算机中存储形式为0111....
//System.out.println(i+1); //i+1在计算机中存储的类型为1000....,其结果为-2147483648
//2.byte, short, long
//int类型的直接量可直接赋给long类型
long l=2;
//int类型的直接量不可超出其取值范围,long类型的直接量应该以l/L结尾
//l=3000000000;
l=3000000000L;
//int类型的直接数可以直接赋给byte, short, long. 但注意不能超过其取值范围
byte b=4;
//b=128;
//b=i;
short s=2;
//s=32768;
//s=i;
//3.double, float
//直接写出的小数为double类型的直接量
double d=0.4;
//float类型的直接量应该以f/F结尾
float f=0.2f;
//浮点数不精确
System.out.println(300000.02f);
System.out.println(300000.03f);
System.out.println(3.3f+0.1f);
//4.char
char c1='A';
char c2=0b01000001; //65,ASCII编码表
char c3='\u0041'; //Unicode, 16进制
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
//转义字符
//char c4=''';
char c4='\'';
char c5='\t';
char c6='\\';
char c7='\n';
System.out.print(c4);
System.out.print(c5);
System.out.print(c6);
System.out.print(c7);
//字符串
String str="Hello World.";
System.out.println(str);
//5.boolean
boolean b1=true;
boolean b2=false;
System.out.println(b1);
System.out.println(b2);
int age=25;
System.out.println(age>18);
System.out.println(age<18);
}
}
1.7运算符
-
运算符分类:算术运算符,关系运算符,逻辑运算符,赋值运算符,三元运算符,字符串的位运算符
-
算术运算符:"+" “-” “*” “/” “%” “++” “- -”
-
关系运算符:">" “<” “>=” “<=” “==” “!=”;返回结果为true或false
-
逻辑运算符:"&&", “||”, “!”;
-
赋值运算符:"=", “+=”, “-=”, “/=”, “*=”
-
三目运算符:布尔表达式: 条件 ? 结果1:结果2
例如:String title = age > 30 ? “小姐姐”:“小美眉”; -
位运算符:"&"," |", " ^(按位异或)", " ~(按位取反)" ,"<<(左移) " ,">>(右移) " ,
">>>(无符号右移 " -
实例
/*
* 这是一个关于算术运算符,关系运算符,逻辑运算符,
* 赋值运算符, 三元运算符, 字符串运算符, 位运算符的示范
* */
public class OperatorDemo {
public static void main(String[] args) {
//1.算术运算符
System.out.println(5/2);
System.out.println(5%2);
//++i,i++
//++i, i先自增, 后运算
int a = 100;
System.out.println(++a + 100);
System.out.println(a);
//i++, i先运算, 后自增
int b=100;
System.out.println(b++ + 100);
System.out.println(b);
//2.关系运算符
int score=70;
System.out.println(score >= 60);
System.out.println(score == 100);
System.out.println(score != 100);
//3.逻辑运算符
int age=32;
double salary=40000.00;
boolean result=age < 30 && salary > 20000.00;
System.out.println(result);
result = age <30 || salary >20000.00;
System.out.println(result);
result =! (age<30 ||salary >20000.00); //可以理解为满足该条件就不行,或者不满足这个条件就行
System.out.println(result);
// && , || , 有时候存在短路现象, 原因是左边已经满足条件, 导致右边未被执行
System.out.println(salary > 50000.00 && ++age > 30);
System.out.println(age);
System.out.println(salary > 20000.00 || ++age > 30);
System.out.println(age);
// 4.赋值运算符 y = x = 1; 等价于 x = 1 ; y = x;
salary = salary + 10000.00;
System.out.println(salary);
double topSalary = salary = salary + 10000.00;
System.out.println(salary);
System.out.println(topSalary);
// 5. 三元运算符
String title = age > 30 ? "小姐姐" : "小美眉";
System.out.println(title);
salary = salary > 50000.00 ? 50000.00 : salary;
System.out.println(salary);
// 6. 字符串运算符
String s1 = "她的年龄:" + age;
System.out.println(s1);
String s2 = "她的工资:" + salary;
System.out.println(s2);
//注意
System.out.println("" + 100 + 200); //return 100200
System.out.println(100 + 200 + ""); //return 300
// 7.位运算
//不同进制的整数表示方法
System.out.println(0b1010);
System.out.println(012);
System.out.println(0xA);
//如何将十进制转化为二进制
System.out.println(Integer.toBinaryString(5));
System.out.println(Integer.toBinaryString(-5));
System.out.println(Integer.toBinaryString(9));
//位移运算
System.out.println(5 << 2);
System.out.println(-5 << 2);
System.out.println(5 >> 2);
System.out.println(-5 >> 2);
System.out.println(-5 >>> 2);
}
}
1.8 输入
-
引入Scanner对象:import java.util.Scanner;
-
创建对象:Scanner scan = new Scanner(System.in);
-
接收数据:scan.nextInt(), scan.nextDouble(), scan.nextLint()
-
停止输入:scan.close();
-
实例
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
//创建Scanner对象
Scanner scan = new Scanner(System.in);
//开始输入
System.out.println("请输入您的名字!");
String name = scan.nextLine();
System.out.println("请输入您的年龄!");
int age = scan.nextInt();
System.out.println("请输入您的月薪!");
double salary = scan.nextDouble();
//关闭scan
scan.close();
//处理输入的数据
System.out.println("姓名:" + name);
System.out.println("年龄:" + age);
System.out.println("月薪:" + salary);
//
}
}
1.9 案例
-
需求一:判断某一年是否为闰年。
-
关键:
-
能被4整除,但不能被100整除;
-
能被400整除;
-
代码:
import java.util.Scanner;
public class LeapYearDemo {
public static void main(String[] args) {
//请输入年份
Scanner scan = new Scanner(System.in);
System.out.println("请输入年份:");
int year = scan.nextInt();
scan.close();
//判断是否为闰年
boolean isLeapYear =(year % 4 == 0 && year % 100 != 0) || (year %400 == 0);
String result = isLeapYear ? "是闰年" : "不是闰年";
System.out.println(result);
}
}
1.10流程控制描述
- 流程控制结构
- 顺序结构:各项操作是按照出现的先后顺序;
- 分支结构:程序步骤出现分支,需要根据某一个特定的条件选择其中一个分支执行;
- 循环结构:程序反复执行某些或某个操作,直至条件成立时终止循环;
- 分支结构包括:if分支和switch分支
- 循环结构包括:while循环,for循环,do … while循环;
1.11 if 与switch分支
-
if语句:功能强大,切语法简介,灵活;
-
switch语句:功能单一,结构固定,但运行效率更高;
-
实例:
import java.util.Scanner;
/*
* 这是if的第一种形式
* */
public class IfDemo {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入您的年龄!");
int age = scan.nextInt();
scan.close();
if (age > 18) {
System.out.println("已成年,准入。");
}
}
}
/*
* 这是if的第二种形式
* */
import java.util.Scanner;
public class IfDemo2 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("输入一个整数!");
int n = scan.nextInt();
scan.close();
if (n % 2 == 0) {
System.out.println("是偶数");
} else {
System.out.println("是奇数");
}
}
}
import java.util.Scanner;
/*
* 这是if的第三种形式
* */
public class IfDemo3 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入Java课程的分数!");
int score = scan.nextInt();
scan.close();
if (score >= 90) {
System.out.println("Java课程成绩为A");
} else if (score >= 80) {
System.out.println("Java课程成绩为B");
} else if (score >= 70) {
System.out.println("Java课程成绩为C");
} else if (score >= 60) {
System.out.println("Java课程成绩为D");
} else {
System.out.println("Java课程成绩为E");
}
//当条件之间具有包含关系时,应当将被包含的条件写在前面,如以下错误案例
if (score >= 60) {
System.out.println("Java课程成绩为D");
} else if (score >= 70) {
System.out.println("Java课程成绩为C");
} else if (score >= 80) {
System.out.println("Java课程成绩为B");
} else if (score >= 90) {
System.out.println("Java课程成绩为A");
} else {
System.out.println("Java课程成绩为E");
}
}
}
import java.util.Scanner;
/*
* 这是if的第四种形式
* */
public class IfDemo4 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入Java课程的分数!");
int score = scan.nextInt();
scan.close();
//当某一分支只含有一行代码时,可以省略{}, 但是不建议这样做。
if (score >= 90) {
System.out.println("Java课程成绩为A");
} else if (score >= 80) {
System.out.println("Java课程成绩为B");
} else if (score >= 70) {
System.out.println("Java课程成绩为C");
} else if (score >= 60) {
System.out.println("Java课程成绩为D");
} else {
System.out.println("Java课程成绩为E");
}
}
}
import java.util.Scanner;
public class SwitchDemo2 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入当前月份!");
int month = scan.nextInt();
scan.close();
switch (month) {
case 1:
case 2:
case 3:
System.out.println("第一季度");
break;
case 4:
case 5:
case 6:
System.out.println("第二季度");
break;
case 7:
case 8:
case 9:
System.out.println("第三季度");
break;
case 10:
case 11:
case 12:
System.out.println("第四季度");
break;
default:
System.out.println("错误的数字!");
}
}
}
1.12循环结构
- 循环三要素:
- 循环条件:逻辑表达式,决定是否执行循环体;
- 循环体:当循环条件满足时,则代码块被重复执行;
- 迭代语句:改变循环条件的变量,使循环条件趋近于假,并最终为假;
- 如何选择循环:
- for循环结构稳定,不容易遗漏任何循环要素,适合处理循环次数固定的场景
- while:先判断循环条件,再执行循环体,适合处理“当…”的循环业务场景。
- do while:先执行循环体,再判断循环条件,适合处理“直到…”的场景。
- 实例:
import java.util.Scanner;
/*
* 关于do, while 的循环
* */
public class LoopDemo2 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入一个整数!");
int num = scan.nextInt();
scan.close();
//记录整数的位数
int len =0;
//循环除尽为止
do {
len++;
num /= 10;
} while (num != 0);
System.out.println("整数位数为" + len);
}
}
/*
* for的循环示例, for的另外三种方式
* */
public class LoopDemo4 {
public static void main(String[] args) {
int i = 0;
for (; i < 10; i++) {
System.out.print(i + "\t");
}
System.out.println("\n");
for (int j = 0; j < 10; j++) {
System.out.print(j + "\t");
}
System.out.println("\n");
for (int m = 0, n = 9; m < 10 && n >-1; m++, n--) {
System.out.println("m =" + m +", n =" + n);
}
}
}