目录
一、编写Hello world程序
public class JavaMain1 {
//主程序执行入口,main方法
public static void main(String[] args){
System.out.println("Hello world!");
}
}
运行结果
Hello world!
java编写主程序常见错误: 1、System ---首字母没有大写 2、主程序没有void
二、关键字
关键字:就是Java语言赋予的特定含义单词
特点:关键字字母全部都是小写,IDEA针对关键字有特殊的颜色标记。如:public class static void 如在IEDA中的关键字,有明显的颜色区分。
三、常量
|
示例代码:
public class JavaMain1 {
//主程序执行入口,main方法
public static void main(String[] args){
//输出字符串常量
System.out.println("Hello world");
//输出整数常量
System.out.println(77777);
//输出小数常量
System.out.println(77.777);
//输出字符常量
System.out.println('男');
//输出布尔常量
System.out.println(ture);
}
}
运行结果
Hello world
77777
77.777
男
true
四、变量
变量:在程序运行过程中,其值可以发生改变的值(变量是内存中一小块区域) 定义变量:变量的数据类型 变量名称=赋值
五、字符和字符串中的‘+’操作
字符的‘+’操作:拿字符在计算机底层对应的数值来进行计算(底层计算使用ASCII码)
ASCII码表中的26个大小写字母对应的十进制如下表:
| 大写字母 | ASCII码 | 小写字母 | ASCII码 |
|----------|----------|----------|----------|
| A | 65 | a | 97 |
| B | 66 | b | 98 |
| C | 67 | c | 99 |
| D | 68 | d | 100 |
| E | 69 | e | 101 |
| F | 70 | f | 102 |
| G | 71 | g | 103 |
| H | 72 | h | 104 |
| I | 73 | i | 105 |
| J | 74 | j | 106 |
| K | 75 | k | 107 |
| L | 76 | l | 108 |
| M | 77 | m | 109 |
| N | 78 | n | 110 |
| O | 79 | o | 111 |
| P | 80 | p | 112 |
| Q | 81 | q | 113 |
| R | 82 | r | 114 |
| S | 83 | s | 115 |
| T | 84 | t | 116 |
| U | 85 | u | 117 |
| V | 86 | v | 118 |
| W | 87 | w | 119 |
| X | 88 | x | 120 |
| Y | 89 | y | 121 |
| Z | 90 | z | 122 |
字符串的‘+’操作:当字符串中出现‘+’,此时的‘+’是连接运算符
六、关系运算符
关系运算符有6种关系,分别为小于、小于等于、大于、等于、大于等于、不等于。
符号 | 说明 |
---|---|
== | a==b,判断a和b的值是否相等,成立为true,不成立为false |
!= | 𝑎 =𝑏a =b,判断a和b的值是否不相等,成立为true,不成立为false |
>> | a>>b,判断a是否大于b,成立为true,不成立为false |
> => = | 𝑎>=𝑏 a>=b,判断a是否大于等于b,成立为true,不成立为false |
<< | 𝑎<𝑏 a<b,判断a是否小于b,成立为true,不成立为false |
< =< = | 𝑎<=𝑏 a<=b,判断a是否小于等于b,成立为true,不成立为false |
注意事项:关系运算符的结果都是𝑏𝑜𝑜𝑙𝑒𝑎𝑛类型,要么是𝑡𝑟𝑢𝑒,要么是𝑓𝑎𝑙𝑠𝑒。千万不要把“”误写成“=”,“”是判断是否相等的关系,“=”是赋值。注意事项:关系运算符的结果都是boolean类型,要么是true,要么是false。千万不要把“”误写成“=”,“”是判断是否相等的关系,“=”是赋值。
七、数据类型的特性或数据类型的属性
Java中基本数据类型名称、关键字、内存占用和取值范围的表格:
数据类型 | 关键字 | 内存占用 | 取值范围 |
---|---|---|---|
byte | byte | 1 字节 | -128 到 127 (-2^7 到 2^7-1) |
short | short | 2 字节 | -32,768 到 32,767 (-2^15 到 2^15-1) |
int | int | 4 字节 | -2,147,483,648 到 2,147,483,647 (-2^31到 2^31-1) |
long | long | 8 字节 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 (-2^63 到 2^63-1) |
float | float | 4 字节 | 大约 ±3.4E-45 到 ±3.4E38,有效位数为6-7位 |
double | double | 8 字节 | 大约 ±4.9E-324 到 ±1.8E308,有效位数为15位 |
char | char | 2 字节 | '\u0000'(0)到 '\uffff'(65,535) |
boolean | boolean | 不确定,通常实现为1位或1字节 | true 或 false |
请注意以下几点:
char
类型表示一个Unicode字符。它以16位(2个字节)的形式存储,范围从'\u0000'(也就是0)到'\uffff'(也就是65,535)。boolean
类型的内存占用在Java中没有明确指定,并且可能因JVM实现而异。虽然它可以只用1位来表示,但出于对齐原因通常会使用更多空间。float
和double
类型遵循IEEE 754标准,分别用32位和64位来存储浮点数。以上表格提供了每种基本数据类型的关键字、内存占用和取值范围的基本概述。
八、逻辑运算符
名称 | 运算符 | 描述 |
逻辑与 | & | a&b,a和b都是true,结果为true。否则为false。 |
逻辑或 | | | a|b,a和b都是false,结果为false。否则为true。 |
逻辑非 | ! | !a,结果和a的结果正好相反 |
逻辑异或 | ^ | a^b,a和b结果不同为true,相同为false |
短路与 | && | 作用和&相同,但是有短路 |
短路或 | || | 作用和|相同,但是有短路 |
逻辑运算符的代码示例如下
public class Logicaloperation {
public static void main(String[] args){
// 逻辑与,左边&右边,都必须是true,则返回结果是为true
System.out.println("&并且");
System.out.println(true & true);
System.out.println(true & false);
System.out.println(false & false);
int a = 10;
int b = 20;
int c = 30;
//a>b false b>c false
System.out.println(a>b&b>c);// 输出:false
//a<b true b<c true
System.out.println(a<b&b<c);// 输出:true
//a<b true b>c false
System.out.println(a<b&b>c);// 输出:false
// 逻辑或,左边 | 右边,只要有一个为true,则返回为true
System.out.println("| 演示");
System.out.println(true | false); // 输出:true
System.out.println(false | false); // 输出:false
System.out.println(true | true); // 输出:true
// 逻辑异或
System.out.println("异或 演示");
System.out.println(true ^ false); // 输出:true
System.out.println(true ^ true); // 输出:false
//逻辑非 !
System.out.println("! 取反");
System.out.println(!true); // 输出:
System.out.println(!false); // 输出:
// 短路与
//左边返回false,右边不会执行,若左边返回true,两边执行
System.out.println("短路与&& 演示");
System.out.println((a++>100)&&(b++>100));
System.out.println(a);
System.out.println(b);
// 短路或
//左边和右边只要有一个返回true,最终结果是true
int d = 10;
System.out.println("短路或 ||");
System.out.println((d++>1)||(b++>100));
System.out.println(d);
System.out.println(b);
}
}
运行结果
&并且
true
false
false
false
true
false
| 演示
true
false
true
异或 演示
true
false
! 取反
false
true
短路与&& 演示
false
11
20
短路或 ||
true
11
20
九、三元运算符
public class ThreeYuan {
public static void main(String[] args){
//三元运算符:关系表达式 ? 表达式1 :表达式2
//关系表达式--boolean(布尔类型),返回true,则执行表达式1,否则执行表达式2
int a = 10;
int b = 20;
int c = a>b?a:b;
System.out.println(c);//输出:20
/*三元运算符(表达式案列)
需求:动物园里有两只老虎,已知两只老虎的体重分别为180kg,200kg。
请用程序判断两只老虎的体重是否相同。
*/
int weight1 = 180;
int weight2 =200;
boolean d = weight1 == weight2 ? true:false;
System.out.println("d:"+d);
//优化,通过中文更直观表达
//关系表达式--boolean(布尔类型),返回true,则执行表达式1,否则执行表达式2
System.out.println(d? "两只老虎相等的":"两只老虎不相等");
/*三元运算符(表达式案列)二
班级中有三名同学,已知他们的身高分别为150cm,210cm,165cm,
请用程序实现获取这三名同学的最高身高。
*/
int height1 = 150;
int height2 = 210;
int height3 = 165;
int testHeight = height1 > height2?height1:height2;
int maxHeight = testHeight > height3 ? testHeight:height3;
System.out.println("最高身高是:"+maxHeight);
}
}
运行结果
20
d:false
两只老虎不相等
最高身高是:210
十、Scanner打印机用法
Scanner使用基本步骤
1、导包 import java.util.Scanner;导包的动作必须出现在定义的类上面
2、创建对象 Scanner sc = new Scanner(System.in);src是为变量名称 可以发生变化 其他不容许发生变化
3、接受数据 int i = sc.nextInt();接受一个int的数据 i是为变量名称 可以发生变化 其他的都不允许发生变化
import java.util.Scanner;
public class Scannerdemo {
public static void main(String[] args) {
//创建了一个打印机
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数值类型的数据");
//接受用户在控制台中输入的数值类型
int i = sc.nextInt();
System.out.println("输入的数值类型值为:" +i);
}
}
运行结果
请输入一个数值类型的数据
1
输入的数值类型值为:1
Scanner类实现求两个数之和
//Scanner类实现求两个数之和
import java.util.Scanner;
public class Scannerdemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个类型的数值:");
int a = sc.nextInt();
System.out.println("请输入第二个类型的数值:");
int b = sc.nextInt();
int c = a + b;
System.out.println("输入的值的总和为:"+c);
}
}
运行结果
请输入第一个类型的数值:
1
请输入第二个类型的数值:
2
输入的值的总和为:3
十一、流程控制语句
流程控制语句: 1、顺序结构 2、分支结构(if、Switch) 3、循环结构(for、while、do……while)
1、if语句
格式:
if(关系表达式){
语句体;
}
关系表达式只有两个结果true或false
首先判断关系表达式看其结果是true还是false
如果是true执行语句体
如果是false不执行语句体
案例判断a和b的值是否相等,如果相等,控制台输出a==b,否则反之
public class IfDemo {
public static void main(String[] args){
int a = 10;
int b = 10;
if (a==b){
System.out.println("a==b");
}
if(a!=b){
System.out.println("a不等于b");
}
System.out.println();
}
}
运行结果
a==b
if写法二:
格式:
if(关系表达式){
语句体1;
}else{
语句体2;
}
关系表达式只有两个结果true或false
首先判断关系表达式看其结果是true还是false
如果是true执行语句体1
如果是false执行语句体2
public class IfDemo {
public static void main(String[] args){
int a = 10;
int b = 20;
if (a>b){
System.out.println("a>b");
}
else {
System.out.println("a<b");
}
System.out.println();
}
}
运行结果
a<b
案例:
需求:任意给出一个整数,请用程序实现判断改整数是奇数还是偶数,并在控制台输出该整数是奇数还是偶然数
import java.util.Scanner;
public class IfDemo {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
int a = sc.nextInt();//存储到变量a中
if(a % 2 == 0){
System.out.println("该整数是偶数");
}else {
System.out.println("该整数是奇数");
}
}
}
运行结果
请输入一个整数:
1
该整数是奇数
多重if判断语句
格式:
if(判断条件1){
执行语句1;
}else if(判断条件2){
执行语句2;
}else if(判断条件n){
执行语句n;
}else{
执行语句n+1
}
首先判断条件1看其结果是true还是false
如果是true执行语句体1,否则执行判断条件2
如果是false,就判断条件2,看其结果是true还是false
如果是true执行语句2,否则执行判断条件n,以此类推。
案例1:键盘输入一个星期数{1,2,3,4,5,6,7}输出对应的星期。
import java.util.Scanner;
public class IfDemo {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个星期数:");
int week = sc.nextInt();//存储到变量中
if(week == 1){
System.out.println("星期一");
}else if(week == 2) {
System.out.println("星期二");
}else if(week == 3) {
System.out.println("星期三");
}else if(week == 4) {
System.out.println("星期四");
}else if(week == 5) {
System.out.println("星期五");
}else if(week == 6) {
System.out.println("星期六");
}else if(week == 7) {
System.out.println("星期日");
}else {
System.out.println("你输入的不是星期数……");
}
}
}
运行结果
请输入一个星期数:
7
星期日
案例2:根据学生的成绩评定出等级,90以上是优,80-89是良,70-79是中,60-69是及格,60以下是不及格
import java.util.Scanner;
public class IfDemo {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个成绩:");
int re = sc.nextInt();//存储到变量中
if(re >90 && re<+100){
System.out.println("成绩为优");
}else if(re >= 80 && re <=89) {
System.out.println("成绩为良");
}else if(re >= 70 && re <=79) {
System.out.println("成绩为中");
}else if(re >= 60 && re <=69) {
System.out.println("成绩及格");
}else if(re <60) {
System.out.println("成绩不合格");
}else {
System.out.println("你输入的不是成绩……");
}
}
}
运行结果
请输入一个成绩:
89
成绩为良
2、Switch语句
switch(10){
case 1:
语句体1;
break;
case 2:
语句体2;
break;
...................................
default:
语句体n+1;
break;
}
格式说明:
1.表达式取值为byte,short,int,char,JDK5以后可以是枚举,JDK7以后可以是字符串(String)
2.case:后面跟的是要和表达式进行比较的值
3.语句体:这个部分可以是一条或者多条语句
4.break:表示中断,结束的意思,可以控制switch语句的结束
5.default:当所有的值都和表达式不匹配的时候,就执行default控制的语句。其实他就相当于if语句的else
执行流程:
1.首先计算出表达式的值
2.其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
3.最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
案例:键盘录入一个星期数{1,2,3,4,5,6,7} 输出对应的星期一.....星期日(使用switch实现)
import java.util.Scanner;
public class Switchdemo{
public static void main(String[] args){
//2.创建键盘录入
Scanner sc= new Scanner(System.in);
System.out.println("请您输入一个星期数:");
//3.接受用户输入的整数类型值
int number= sc.nextInt();
switch(number){
case 1:
System.out.println("星期一");
// 如果匹配上 case 则会 break退出switch语句
break;
case 2:
System.out.println("星期二");
// 如果匹配上 case 则会 break退出switch语句
break;
case 3:
System.out.println("星期三");
// 如果匹配上 case 则会 break退出switch语句
break;
case 4:
System.out.println("星期四");
// 如果匹配上 case 则会 break退出switch语句
break;
case 5:
System.out.println("星期五");
// 如果匹配上 case 则会 break退出switch语句
break;
case 6:
System.out.println("星期六");
// 如果匹配上 case 则会 break退出switch语句
break;
case 7:
System.out.println("星期日");
// 如果匹配上 case 则会 break退出switch语句
break;
default:
System.out.println("您输入的星期数不正确!");
break;
}
}
}
运行结果
请您输入一个星期数:
8
您输入的星期数不正确!
案例:
需求:一年有12个月,分属于春夏秋冬4个季节,键盘录入一个月份,请用程序实现判断该月份属于哪个季节,并输出。
春:3、4、5
夏:6、7、8
秋:9、10、11
冬:1、2、12
多个case后面的值不可以重复,重复则编译报错
import java.util.Scanner;
public class Switchdemo{
public static void main(String[] args){
//2.创建键盘录入
Scanner sc= new Scanner(System.in);
System.out.println("请您输入一个月份");
//3.接受用户输入的整数类型值
int number= sc.nextInt();
// 冗余 穿透
switch(number){
case 1:
case 2:
case 12:
System.out.println("冬季");
break;
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
case 9:
case 10:
case 11:
System.out.println("秋季");
//break;
default:
System.out.println("用户输入的月份不正确!");
}
}
}
运行结果
请您输入一个月份
2
冬季
3、for语句
for循环语句格式:
for (初始化语句;条件判断语句;条件控制语句)
{
循环体语句;
}
执行流程:
1.执行初始化语句
2.执行条件判断语句,看其结果是true还是false
如果是false,循环结束
如果是true,继续执行
3.执行循环体语句
4.执行条件控制语句
5.回到2过程继续
public class Fordemo{
public static void main(String[] args){
/*
for循环语句格式:
for (初始化语句;条件判断语句;条件控制语句)
{
循环体语句;
}
*/
// 控制台输出5个我是余胜军 非常冗余(重复)
System.out.println("控制台输出");
System.out.println("控制台输出");
System.out.println("控制台输出");
System.out.println("控制台输出");
System.out.println("控制台输出");
System.out.println("使用for循环输出:");
// 1.初始化语句 int i=0;
// 2.条件判断语句 i(0)<5 true
// 3.控制台输出
// 4.条件控制语句 控制循环是否可以继续执行 i+1
// 5.条件判断语句 i(1)<5
// 6.控制台输出
// 7.条件控制语句 i(1)+1
// 5.条件判断语句 i(2)<5
for(int i=0;i>5;i++){
System.out.println("控制台输出我");
}
}
}
运行结果
控制台输出
控制台输出
控制台输出
控制台输出
控制台输出
使用for循环输出:
控制台输出我
控制台输出我
控制台输出我
控制台输出我
控制台输出我
案例:在控制台输出1-5和5-1数据
public class Fordemo{
public static void main(String[] args){
System.out.println("输出1-5的数据");
//第一次i=0
//第二次i=1
//第三次i=2
//第四次i=3
//第五次i=4
//第六次i=5
for(int i=0;i<=5;i++){
System.out.println("第:"+(i+1)+"次");
}
System.out.println("----输出5-1的数据-----");
for(int i=5;i>=1;i--){
System.out.println(i);
}
}
}
运行结果
public class Fordemo{
public static void main(String[] args){
System.out.println("输出1-5的数据");
//第一次i=0
//第二次i=1
//第三次i=2
//第四次i=3
//第五次i=4
//第六次i=5
for(int i=0;i<=5;i++){
System.out.println("第:"+(i+1)+"次");
}
System.out.println("----输出5-1的数据-----");
for(int i=5;i>=1;i--){
System.out.println(i);
}
}
}
案例:求1-5之间的数据和,并且将求和的结果在控制台输出
public class Fordemo{
public static void main(String[] args){
System.out.println("求1-5的总和");
int sum=0;
for(int i =1;i<=5;i++){
// sum=sum+i;
sum+=i;
// sum+=i;==等价于sum=sum+i;
//第一次 sum= sum(0)+1;=1
//第二次 sum= sum(1)+2;=3
//第三次 sum= sum(3)+3;=6
//第四次 sum= sum(6)+4;=10
//第五次 sum= sum(10)+5;=15
}
System.out.println("sum:"+sum);
}
}
运行结果
public class Fordemo{
public static void main(String[] args){
System.out.println("求1-5的总和");
int sum=0;
for(int i =1;i<=5;i++){
// sum=sum+i;
sum+=i;
// sum+=i;==等价于sum=sum+i;
//第一次 sum= sum(0)+1;=1
//第二次 sum= sum(1)+2;=3
//第三次 sum= sum(3)+3;=6
//第四次 sum= sum(6)+4;=10
//第五次 sum= sum(10)+5;=15
}
System.out.println("sum:"+sum);
}
}
运行结果
求1-5的总和
sum:15
案例:
求1-5之间的数据和,并且将求和的结果在控制台输出
1,2,3,4,5 1+2+3+4+5=
public class Fordemo {
public static void main(String[] args){
System.out.println("求1-5的总和");
int sum=0;
for(int i =1;i<=5;i++){
// sum=sum+i;
sum+=i;
// sum+=i;==等价于sum=sum+i;
}
System.out.println("sum:"+sum);
}
}
运行结果
求1-5的总和
sum:15
4、while循环语句
基本格式:
while(判断条件语句) {
循环体语句;
}
完整格式:
初始化语句;;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
①执行初始化语句;
②执行条件判断语句,看其结果是true还是false;
如果是false,循环结束;
如果是true,继续执行;
③执行循环体语句;
④执行条件控制语句;
⑤返回②继续执行。
public class Whiledemo{
public static void main(String[] args){
/*
初始化语句;;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
*/
int j=1;//初始化语句
while(j<=5){
System.out.println("我是诸葛成");
j++;// 控制条件语句;
}
}
}
运行结果
我是诸葛成
我是诸葛成
我是诸葛成
我是诸葛成
我是诸葛成
5、do-while循环语句
do while语句
基本格式:
do {
循环体语句;
}while((判断条件语句);
完整格式:
初始化语句;
do {
循环体语句;
条件控制语句;
}while(条件判断语句);
执行流程:
①执行初始化语句
②执行循环体语句
③执行条件控制语句
④执行条件判断语句,看其结果是true还是false
如果是false,循环结束
如果是true,继续执行
⑤回到②继续
public class Whiledemo{
public static void main(String[] args){
// do while
/*
初始化语句;
do {
循环体语句;
}while(条件判断语句);
*/
int j=1;//初始化语句;
do{
System.out.println("我是诸葛成"); //循环体语句;
j++;//条件控制语句;
}while(j<=5);
}
}
运行结果
我是诸葛成
我是诸葛成
我是诸葛成
我是诸葛成
我是诸葛成
十二、Random随机数
作用:用于产生一个随机数
①导包
import java.util.Random;
导包的动作必须出现在类定义上边
②创建对象
Random r = new Random();
上边这个格式里面,r是变量名,可以变,其他的都不允许变
③获取随机数
int number = r.nextInt(10);//获取数据的范围:[0,10)包括0,不包括10
上边这个格式里面,number是变量名,可以变,数字10可以变,其他都不可以变
十三、跳转控制语句
跳转控制语句(break),跳出循环,结束循环
跳转控制语句(continue),跳过本次循环,继续下次循环
注意: continue只能在循环中进行使用!
break 结束整个循环 continue 只是结束本次循环 但是还会继续下次循环
continue用法:使用for 循环1-10 不输出偶数结果
1,2,3,4,5,6,7,8,9,10
public class Whiledemo {
public static void main(String[] args){
for(int i=1;i<=10;i++){
if(i%2==0){
continue;// i是偶数结束了本次循环,不打印
}
System.out.println("i:"+i);
}
}
}
运行结果
i:1
i:3
i:5
i:7
i:9