java程序语言基础
java基础语法
界面输出-输出语句
System.out.println();在打印信息后会自动换行
System.out.print();在打印信息后不会自动换行
例如:
public class Main() {
public static void main(String [] args) {
// 在大括号里输入代码
// 打印信息后自动换行
System.out.println("姓名:王艺博");
System.out.println("年龄:18");
}
}
/*输出结果为:
姓名:王艺博
年龄:18
*/
这里的 // 是可以注释的意思单行代码 ,在//后面的写的内容不会在输出界面显示 。还有/**/这个的意思是多行注释,可以注释多行内容或代码,在两个星号中间输入的内容是不会在输出界面显示的
public class Main() {
public static void main(String [] args) {
// 在大括号里输入代码
// 打印信息后不会自动换行
System.out.print("姓名:王艺博");
System.out.print("年龄:18");
}
}
/*输出结果为:
姓名:王艺博年龄:18
*/
变量
语法格式
-
数据类型(确定变量类型) 变量名(确定变量名) ,变量名 = 值(给变量一个默认值);例如:int num; num = 12;
-
数据类型 变量名 = 值 如:int a = 12; ";"英文状态下的字符
注意:
-
变量可以包括数字,但不能以数字开头
-
变量必须以字母开头、下划线“_”或“$”符开头
-
除了“_”或“$”以外,变量名不能包含任何特殊字符
-
不能使用java语言关键字,如 int、public、class等
-
java语言区分大小写
-
同时,为了我们的代码更加规范我们还应该遵循以下命名规范:
-
尽量使用有意义的变量名,变量名要简短且能清楚地表明变量的作用
-
-
第一个单词首字母小写,其后单词的首字母大写
-
-
java数据类型
-
基本数据类型
-
整数类型
-
byte :节约空间,占用空间只有int的四分之一 例如:byte b = 5;
-
short:节约空间,占用空间只有int的二分之一 例如:short s = 10;
-
int :一般地整型变量默认为 int 类型(常用) 例如:int i = 12;
-
long:主要用在存储比较大的数据 例如:long l = 23121312L; 注意:这里给变量赋的值要加L
-
-
浮点数类型
-
float:用于储存带有小数的数据 例如:float a = 1.11f; 注意:这里给变量赋的值要加f
-
double:用于储存带有小数的数据(常用) 例如:double high = 1.75;
-
-
-
特殊数据类型
-
布尔类型
-
boolean:只有两个值true(真)/false(假), 默认值为false 例如:boolean flag = true;
-
-
字符型
-
char:用于储存单个字符,例如,性别“男”和“女” char sex = '男'; 注意:这里是用的单引号
-
-
-
引用数据类型
-
字符串型
-
String: 用于储存一串字符,例如:String haha = "哈哈哈哈哈哈哈";
-
-
public class Main() {
public static void main(String [] args) {
// 在大括号里输入代码
byte b = 5;
short s = 10;
int i = 12;
long l = 23121312L;
float a = 1.11f;
double high = 1.75;
char sex = '男';
boolean flag = true;
String haha = "哈哈哈哈哈哈哈";
// 这里直接打印变量名
System.out.println(b);
System.out.println(s);
System.out.println(i);
System.out.println(l);
System.out.println(a);
System.out.println(high);
System.out.println(sex);
System.out.println(flag);
System.out.println(haha);
}
/*
输出的结果为:
5
10
12
23121312L
1.11f
1.75
男
true
哈哈哈哈哈哈哈
*/
}
运算符
-
赋值运算符
-
= 说明: 将等号右边的值赋值给左边的变量 例如:int money = 100;使用“=”将数值100放入变量money的储存空间中
-
-
算数运算符
-
% + - * / 说明 : 数学中的加减乘除, %:取余 - 左操作数除以右操作数的余数
-
-
关系运算符
-
!= > < >= <= == 说明 : 不等于、大于、小于、大于等于、小于等于、等于 例如:99 != 100,结果为true(真)、99 > 100,结果为false(假)、99 < 100,结果为true(真)、99 >= 100,结果为false(假)、99 <= 100,结果为true(真)、地球的大小 == 篮球的大小,结果为false
-
-
逻辑运算符
&& 说明: 与、并且 当且仅当两个操作数都为真,条件才为真。 例如: (A && B)为假。
|| 说明: 或、或者 如果任何两个操作数任何一个为真,条件为真。 例如: (A | | B)为真。
! 说明: 非 用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false 例如:!(A && B)为真。
public class Main {
public static void main(String[] args) {
// 把“=”号后面的值赋值给等号前面的变量
System.out.println("赋值运算符和算术运算符,变量名是自己定义的,如下面的num,num1,num2等等");
int num = 7+1;// + 加
int num2 = 9-1;// - 减
int num3 = 2*4;// * 乘
int num4 = 16/2;// 除/
int num5 = 18%10;// 取余数 %
System.out.println(num);// 8
System.out.println(num2);// 8
System.out.println(num3);// 8
System.out.println(num4);// 8
System.out.println(num5);// 8
System.out.println("----------------------------");
System.out.println("关系运算符,返回true和false");
int num99 = 99;
int num100 = 100;
System.out.println(num99 != num100);// true
System.out.println(num99 > num100);// false
System.out.println(num99 < num100);// true
System.out.println(num99 >= num100);// false
System.out.println(num99 <= num100);// true
System.out.println(num99 == num100);// false
}
/* 打印结果为:
赋值运算符和算术运算符,变量名是自己定义的,如下面的num,num1,num2等等
8
8
8
8
8
----------------------------
关系运算符
true
false
true
false
true
false
*/
}
数据类型转换
自动数据类型转换:1.要转换的两种类型要兼容(整数和浮点型)互相兼容。2.我要转换的类型大于源类型 例如:int num = 10;double d = num;这里double类型变量分配的空间大于int类型分配的空间
强制类型转换:(数据类型)表达式 例如:double d = 12.13; int i = (int)i;运行后i的值为12
public class demo01 {
public static void main(String[] args) {
// 数据类型转换,直接转换
int num = 12;
double num1 = num;// 12.0 因为double是浮点数类型,所以int(整数)类型的num的值转换为double(浮点数)类型num1的值会加个.0
System.out.println("原数据:" + num);
System.out.println("转换double类型后:" + num1);
// 强制转换
double num2 = 12.99;
int num3 = (int)num2;// 12 因为int是整数类型,所以double(浮点数)类型的num2的值转换为int(整数)类型num3的值会把小数点和后面的值去掉,这里不遵循四舍五入方法
System.out.println("原数据:" + num2);
System.out.println("转换int类型后:" + num3);
}
}
/* 输出结果为:
原数据:12
转换double类型后:12.0
原数据:12.12
转换int类型后:12
*/
Scanner对象
java.util.Scanner是java5的新特征,我们可以通过Scannner类来获取用户的输出。
Scanner类:
Scanner类是引用数据类型的一种,我们可以使用该类来完成用户键盘录入,获取到录入的数据。
Scanner使用步骤:
导包:import java.util.Scanner;
创建对象实例:Scanner sc = new Scanner(System.in);
基本语法:
Scanner s = new Scannner(System.in);
import java.util.Scanner;
public class demo01 {
public static void main(String[] args) {
//创建Scanner引用类型的变量
Scanner sc = new Scanner(System.in);
//获取数字
System.out.println("请输入一个数字");
int n = sc.nextInt();
System.out.println("n的值为" + n);
//获取字符串
System.out.println("请输入一个字符串");
String str = sc.next();
System.out.println("str的值为" + str);
}
}
Scanner方法:
next():
1.一定要读取有效字符后才可以结束输入。
2.对输入字符前遇到的空白,next()方法可以自动将空白去掉
3.只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
next()方法不能得到带有空格的字符串
流程控制语句
-
if选择结构
-
if单选择结构:
语法:
if(布尔表达式){ //如果布尔表达式为true将执行的语句 } public class demo02 { public static void main(String[] args) { if ( 1+1 == 2 ) { System.out.println("1+1= 2"); } } } /* 打印结果 1+1= 2 */
-
if双选择结构:
语法:
if(布尔表达式){ //如果布尔表达式为true将执行的语句 }else{ //如果布尔表达式为false将执行语句 } public class demo02 { public static void main(String[] args) { if ( 1+1 == 3 ) { System.out.println("1+1= 2"); }else { System.out.println("1+1= 3"); } } } /* 打印结果 1+1= 3 */
-
if多选择结构:
语法:
if(布尔表达式1){ //如果布尔表达式1的值为true执行代码 }else if(布尔表达式2){ //如果布尔表达式2的值为ture执行代码 }else if(布尔表达式3){ //如果布尔表达式3的值为true执行代码 }else{ //如果以上表达式的值都不为true执行代码 } public class demo02 { public static void main(String[] args) { System.out.println("请输入你的成绩:"); Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); if ( num == 100 ) { System.out.println("奖励100元"); }else if ( num <100 && num >= 80) { System.out.println("奖励95元"); }else if ( num <80 && num >= 60) { System.out.println("奖励60元"); }else if ( num < 60 && num >= 0) { System.out.println("没有奖励"); }else{ System.out.println("输入的成绩不合法"); } } } /*打印结果 请输入你的成绩: 88 奖励95元 */
/** * if 语句至多有一个else语句,else在所有的else if语句之后。 * if 语句可以由若干个else if 语句,他必须在else语句之前。 * 一旦其中一个else if 语句检测为true,其他的else if语句以及else语句都将跳过执行。 */
嵌套的if结构:
if(布尔表达式){ //如果布尔表达式为true将执行的语句 if(布尔表达式){ //如果布尔表达式为true将执行的语句 } } public class Demo06 { public static void main(String[] args) { System.out.println("输入比赛成绩:"); Scanner scanner = new Scanner(System.in); double miao = scanner.nextDouble(); if (miao <= 10 ) { System.out.println("请输入性别:"); String sex = scanner.next(); if ("男".equals(sex)) { System.out.println("进入男子组"); }else if ("女".equals(sex)){ System.out.println("进入女子组"); }else{ System.out.println("额..."); } }else{ System.out.println("无法进入决赛"); } scanner.close(); } } /* 打印结果 输入比赛成绩: 10 请输入性别: 男 进入男子组 */
-
-
switch选择结构
switch(expression){ case value : //value是变量类型 //语句 break; //可选,如果不打break会直接执行下一个分支 case value : //语句 break; //可选 //你可以有任意数量的case语句 default ://可选 //语句 }
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入快捷键:");
int num = scanner.nextInt();
switch (num) {
case 1:
System.out.println("爸爸");
break;
case 2:
System.out.println("妈妈");
break;
case 3:
System.out.println("爷爷");
break;
case 4:
System.out.println("奶奶");
break;
default:
System.out.println("尚未设置此数字的自动拨号");
}
scanner.close();
}
}
/* 打印结果
请输入快捷键:
3
爷爷
*/
```
循环结构
while
do-while
-
for
-
while循环:
while(布尔表达式){ //循环内容 }
public class Demo01 {
public static void main(String[] args) {
System.out.println("学习是否合格?(y/n)");
Scanner scanner = new Scanner(System.in);
String answer = scanner.next();
while ("n".equals(answer)) {
System.out.println("上午学理论!");
System.out.println("下午学编程!");
System.out.println("学习是否合格?(y/n)");
answer = scanner.next();
}
System.out.println("完成学习任务!");
scanner.close();
}
}
/* 打印结果
学习是否合格?(y/n)
n
上午学理论!
下午学编程!
学习是否合格?(y/n)
y
完成学习任务!*/
* 只要布尔表达式为true,循环就一直执行下去。 * **我们大多数情况是会让循环停止下来的,我们需要一个让表达式失效的方式来结束循环。** * 少部分情况需要循环一直执行,比如服务器的请求响应监听等。 * 循环条件一直为true就会造成无限循环【死循环】,我们正常的业务编程中应该尽量避免死循环。会影响程序性能或者造成程序卡死崩溃! - #### do...while 循环: * 对于while 语句而言,如果不能满足条件则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。 * do...while 循环和 while 循环相似,不同的是 do...while循环至少执行一次。 ```java do { //代码语句 }while(布尔表达式); package edu.xcdq; public class Demo03 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String shifouhege = ""; do { System.out.println("上机编写程序"); System.out.println("是否合格:(y/n)"); shifouhege = scanner.next(); }while (shifouhege.equals("n")) ; System.out.println("恭喜你合格了"); } } /* 上机编写程序 是否合格:(y/n) n 上机编写程序 是否合格:(y/n) y 恭喜你合格了 */
- While 和do...while的区别:
- while先判断后执行。do...while是先执行后判断!
- do...while总是保证循环体会被至少执行一次!这是它们的主要差别。
-
For循环:
- 虽然所有循环结构都可以用while或者do...while表示,但java提供了另一种语句——for循环,使一些循环结构变得简单。
- for循环语句是支持迭代的一种通用结构,是最有效,最灵活的循环结构。
- for循环执行的次数是在执行前都确定的。语法格式如下:
for(初始化;布尔表达式;更新){ //代码语句 } public class Demo01 { public static void main(String[] args) { for (int i = 0;i < 10;i++) { System.out.println( "第" + i + "次循环" ); } } } /* 打印结果 第0次循环 第1次循环 第2次循环 第3次循环 第4次循环 第5次循环 第6次循环 第7次循环 第8次循环 第9次循环 */
-
跳转语句
-
break:通常用在switch、循环语句中来终止语句
public class demo09 { public static void main(String[] args) { for (int i = 0; i < 10; i++) { if ( i == 5 ) {// 第五次循环结束 break; } System.out.println("第" + i + "次循环"); } } } /* 第0次循环 第1次循环 第2次循环 第3次循环 第4次循环 */
-
continue:通常用于循环语句,跳过本次循环,执行下一次循环
public class demo09 { public static void main(String[] args) { for (int i = 0; i < 10; i++) { if ( i == 5 ) {// 跳出第五次循环 continue; } System.out.println("第" + i + "次循环"); } } } /* 打印结果 第0次循环 第1次循环 第2次循环 第3次循环 第4次循环 第6次循环 第7次循环 第8次循环 第9次循环 */
数组
-
储存多个数据
使用方法
int [] scores; 声明:告诉操作系统有一个数组的变量 叫scores
int [] scores1 = new int[5];声明并初始化 申请了内存空间,申请空间成功,则在内存中初始化为0
int [] scores2 = {1.2.5.4} 声明数组并直接给值
//定义:给定元素的值
scores1[0] = 45;
scores1[1] = 55;
scores1[2] = 65;
scores1[3] = 75;
scores1[4] = 85;数组插入元素
package edu.xcdq; import java.util.Arrays; import java.util.Scanner; /** * @author 王艺博 * @date 2021/3/25 10:29 */ public class Demo06 { public static void main(String[] args) { /** * 插入新元素,依旧保持原数组有序 */ int [] scores = new int[7]; scores[0] = 99; scores[1] = 88; scores[2] = 77; scores[3] = 66; scores[4] = 55; scores[5] = 44; // 1、获取要插入的值 System.out.println("请输入你要插入的值:"); Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); // 2、找到要插入新值的位置 int index = 0; for (int i = 0; i < scores.length; i++) { if ( num > scores[i] ) { index = i; break; } } // 2.1 打印原数组 System.out.println(Arrays.toString(scores)); // 3.把元素向后移动 index <-> length-1 for (int i = scores.length-1; i > index; i--) { System.out.println("把" + (i-1) + "位置的元素" + scores[i-1] + "移动到" + i + "位置" + scores[i]); scores[i] = scores[i-1]; System.out.println(Arrays.toString(scores)); } // 4、插入新值 System.out.println("在" + index + "位置" + scores[index] + "插入新值:" + num); scores[index] = num; // 5、打印插入后的结果 System.out.println("降序"); for (int i = 0; i < scores.length; i++) { System.out.print(scores[i] + "\t"); } System.out.println(); System.out.println("升序"); for (int i = scores.length-1; i >= 0; i--) { System.out.print(scores[i] + "\t"); } } } /* 打印结果 请输入你要插入的值: 60 [99, 88, 77, 66, 55, 44, 0] 把5位置的元素44移动到6位置0 [99, 88, 77, 66, 55, 44, 44] 把4位置的元素55移动到5位置44 [99, 88, 77, 66, 55, 55, 44] 在4位置55插入新值:60 降序 99 88 77 66 60 55 44 升序 44 55 60 66 77 88 99 */
java面向对象
类 例如:学生类
-
对象
-
属性 名字、年龄、性别、身高、等等
-
方法 也就是行为 比如 吃、玩、睡觉
-
语法格式:
public class Student() { // 定义属性部分 // 属性1的类型 属性1 // 属性2的类型 属性2 // 属性n的类型 属性n // 定义方法部分 // 方法1 // 方法2 // 方法n }
-
```java
public class Student {
// 属性 定义在类中,叫属性,有对应的默认值 如果基本数据类型的变量定义在方法中,不给值则没有默认值
String name;
int age;
char sex;
double high;
double height;
// 方法
public void eat() {
System.out.println("吃吃吃");
}
public void play() {
System.out.println("玩耍");
}
public void sleep() {
System.out.println("睡觉");
}
}
```
### 对象的创建与使用:
#### 语法格式:
###### 类名 对象名 = new 类名();
###### 在创建类的对象时,需要用到java中的new关键字
###### 例如:Student wangyibo = new Student();
###### 在java中要引用对象的属性和方法,需要使用“.”操作符,对象名在“.”前面,属性或方法在“.”后面
#### 语法格式
###### 对象名.属性 引用对象的属性
###### 对象名.方法 引用对象的方法
###### 例如:创建Student类的对象后,就可以给对象的属性赋值或调用方法了,代码如下
```java
package demo; // 包 包名
/*
* public 公有的,公共的 其他程序都可以访问,最大的权限,其他程序都能访问
* class 类
* Main 类的名称,随便取名字,最好有意义的,一般要求首字母大写
*
*/
public class Main {
/*
* public 公有的,公共的 其他程序都可以访问,最大的权限,其他程序都能访问
* static 静态的 没有对象也可以调用,属于公共资源
* void 空 方法的返回值,由于main是主方法,不需要跟任何程序返回内容,因此就写空
* main 主要的 方法的名字,可以随便取,但是入口主方法只能写成main,自定义的方法可以自己取,建议有意义,建议首字母小写,驼峰命名法
* (String[] args) 方法的参数 String[] -> 参数的类型 args 数组的名字
* */
public static void main(String[] args) {
// 对象的创建 类型 对象名 = new 类名()
Student wangyibo = new Student();
// 属性的赋值
wangyibo.name = "王艺博";
wangyibo.age = 18;
wangyibo.sex = '男';
wangyibo.high = 1.75;
wangyibo.height = 63;
// 属性的调用
System.out.println(wangyibo.name);
System.out.println(wangyibo.age);
System.out.println(wangyibo.high);
System.out.println(wangyibo.height);
System.out.println(wangyibo.sex);
// 方法的调用
wangyibo.eat();
wangyibo.play();
wangyibo.sleep();
}
}
```