目录
第一个java程序
public class HelloWord {
//主方法:每个程序的入口函数
public static void main(String[] args) {
System.out.println("Hello Word");
}
}
运行过程
通过编译生成.class字节码文件,在虚拟机上解释该字节码文件并运行
运行结果
java注释
单行注释://
多行注释:/*.....*/
文档注释:/**...*/
java变量
什么是变量
变量的声明
变量声明的语法规则:变量类型 变量名字;
未经声明的变量不能使用
java语言语法规定,变量在使用前,必须声明,否则会出现“编译错误”
public static void main(String[] args){
a = 1; //编译错误,变量没有声明
int age = 30;
aeg = 20; //编译错误
System.out.println(aeg);
}
变量的命名规则
变量的命名需要符合Java标识符语法要求
-可以有字母,数字,”_”和”$”符组成
-首字符不能以数字开头
-Java是大小写敏感的语言,命名变量时需要注意
-不能使用Java保留字(Java语言规定好的,有特殊含义的字符:public static void…)
tips:JAVA严格区分大小写
java中的保留字
经典案例
实现两个整形变量的数据交换,例如:int a = 100;int b = 200,将b的200赋值给a,同时将a的100赋值给b,最终实现结果 a = 200,b = 100。
public static void main(String[] args) {
int a = 1;
int b = 2;
a = a + b;
b = a - b;
a = a - b;
System.out.println(a);
System.out.println(b);
}
基本数据类型
8种基本数据类型
类型转换
自动类型转换
public static void main(String[] args) {
char a = 3;
int b = a;
System.out.println(b);
}
这里char类型是小类型,int是大类型,char类型数据可以直接保存在int类型数据中
强制类型转换
public static void main(String[] args) {
double a = 1.13;
int b = (int)a; //强制类型转换
System.out.println(b);
}
这里double是大类型,int是小类型,所以double类型的数据不能直接转为int类型,需要在前面加上(int)代表强制转换。
运算符与表达式
算数运算
符号 | 名称 | 作用 |
+ | 加 | 1.如果两个操作数都是数值型的数据,+用于计算。 2.如果两个操作数有一端是字符串,+用于拼接字符串。 |
- | 减 | 用于两个数值型数据 |
* | 乘 | 用于两个数值型数据 |
/ | 除 | 用于两个数值型数据(两个整数相除,结果取整) |
% | 取余 | 用于数值型数据 |
++ | 自增 | 用于数值型数据 |
-- | 自减 | 用于数值型数据 |
注意点
关系运算
符号 | 名称 | 作用 |
> | 大于 | 判断左边的值是否大于右边 |
< | 小于 | 判断左边的值是否小于右边 |
== | 等于 | 判断两个值是否相等 |
>= | 大于等于 | 判断左边的值是否大于等于右边 |
<= | 小于等于 | 判断左边的值是否小于等于右边 |
!= | 不等于 | 判断左边的值不等于右边的值 |
注意点
逻辑运算
逻辑运算的结果为boolean类型。
A | B | !A | A&&B | A||b | A&B | A|B |
true | true | false | true | true | true | true |
true | false | false | false | true | false | true |
false | true | true | false | true | false | true |
false | false | true | false | false | false | false |
"短路逻辑"的原则
三目运算符(条件运算符)
X ? Y : Z; --àboolean表达式?表达式1 : 表达式2;
如果X为false,则运算结果为Z的值。
int a = 5, b = 6;
int max = a>b ? a : b;//找出a,b中的最大值。
因为a<b,a>b值为false,所以最大值是b。
分支语句
程序结构
任何复杂的程序都是由“顺序结构”,“分支结构”,“循环结构”组成的。
分支结构——if---else语句
注意:if后的语句块如果不加{},只有第一个语句属于if。
分支结构——switch---case语句
default: 语句系列其它......;break;
tips:如果case语句没有break,则会穿透case语句执行后面剩下的语句。
循环语句
循环结构——for循环
for语法规则:
for(表达式1;表达式2;表达式3){
// 语句序列
}
public static void main(String[] args) {
for (int i = 0 ; i<100 ; i++){
System.out.println("xxx"); //循环输出100次“xxx”
}
}
for循环流程图
循环结构——while循环
语句0 ;
while(循环条件){
语句1 ;//循环体
}
语句2 ;
循环结构——do---while循环
语句0 ;
do{
语句1;//循环体
语句2;
}while (循环条件);
语句3 ;
案例:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i = 1;
int password = 123456;
int pwd;
do {
if (i == 6) {
System.out.println("输入次数用完了,请2半个小时后尝试");
return;
}
System.out.println("请输入密码");
pwd = sc.nextInt();
i++;
}while (pwd != password);
System.out.println("解锁成功");
}
tips:do---while循环,循环体内的代码块至少执行一次。
whlie与do---while对比
注意:
- while循环先判断,再执行。
- do---while循环先执行一次,再判断。
- while循环比do---while循环用的多。
死循环
break使用规则
continue使用规则
数组
数组是一种最基本的数据结构
数组:相同数据类型的元素组成的集合
元素按线性顺序排列。所谓线性顺序是指除第一个元素外,每一个元素都有唯一的前驱元素; 除最后一个元素外,每一个元素都有唯一的后继元素(“一个跟一个”),可以通过元素所在位置的顺序号(下标)做标识来访问每一个元素(下标从0开始,最大到元素的个数-1)
数组的声明
数据类型[] 数组名 = new 数据类型[大小];
例:int[] arr = int[10];
数组声明的要点
数组初始化
3种方法:
int[ ] arr = new int[ 3 ];
int[ ] arr = {1,2,3,4};
int[] arr = new int[ ]{1,2,3,4};
int[] arr = new int[4];
int[] arr = {1,4,7};
int[] arr = new int[]{2,4,6,8}
int[] arr;
arr = new int[5];
arr = new int[]{1,2,3}//正确
arr= {1,4,6};//错误
数组声明的默认值
数组new之后,每个元素都有默认值。int,long默认值为0,double默认值为0.0,boolean默认值为false,char默认值为空字符。
数组访问
通过下标访问数组
arr[0];
arr[1];
arr[3];
数组的排序
冒泡排序
public static void main(String[] args) {
int[] arr = new int[]{10,15,8,40,25,5};
int temp;
//从小到大排序
for (int j=0;j<arr.length;j++) {
for (int i = 0; i < arr.length - 1 - j; i++) {
if (arr[i] > arr[i + 1]) {
temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
}
System.out.println();
for (int i : arr) {
System.out.print(i+"\t");
}
//从大到小排序
for (int j=0;j<arr.length;j++) {
for (int i = 0; i < arr.length - 1 ; i++) {
if (arr[i] < arr[i + 1]) {
temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
}
System.out.println();
for (int i : arr) {
System.out.print(i+"\t");
}
}
结果
数组扩容
例:
public static void main(String[] args) {
String[] strs = new String[4];
for (int i=0;i<strs.length;i++){
strs[i] = "Tom"+i;
}
String str = Arrays.toString(strs);
System.out.println("str:" + str);
//数组扩容
strs = Arrays.copyOf(strs, strs.length + 1);
strs[4] = "tom";
System.out.println(Arrays.toString(strs));
true
true