java运行机制
Demo01.java(源代码) --编译--->Demo01.class(字节码文件) --->在JVM上运行
--->完成功能,打印Hello World
变量
什么是变量?
内存中存储数据的空间,存储的数据可以改变
java的数据类型
a.基本类型(原始类型,标量) -- 8个
整数:byte(8 bit) short(16bit) int(32bit) long(64bit)
浮点数(小数):float(32bit) double(64bit)
布尔值(逻辑值): boolean (true false)
字符类型:char-- 'A' 'a' '中' '1' '#'
b.引用类型(对象类型)
String (字符串)
两中类型在内存中存储数据的方式
基本类型:存放在栈区,放在同一个空间
引用类型:引用变量放在栈区,存放内容的地址值
内容存放在堆区.
运算符与表达式
a. 赋值运算 (=)
int a = 1
b. 复合赋值运算
int a = 1;
a += 2; -- a = a + 2
a -=2;--- a = a - 2
a *=2
a /=2
a %=2
c. 算术运算
+ - * / %(取余数)
d.关系运算
> >= < <= != ==(等于)
e.逻辑运算
与
条件1 && 条件2
true && true == true
true && false = false
false && true= false
false && false = false
或
条件1 || 条件2
true || true == true
true || false = true
false || true= true
false || false = false
非
!true = false
!false = true
条件运算(三目运算)
条件?值1:值2 --整体返回值
if结构
switch(参数)
参数默认是int类型,比int小的整数 byte short
但是long不行
char
switch(参数){
case 值1:语句1;break;
case 值2:语句2;break;
case 值3:语句3;break;
....
default:语句n
}
循环结构
while do while for
循环三要素
循环变量 循环条件 循环体
1+2+3+....+100 = 5050
break与continue
break: 终止循环
continue:结束本次循环,进入下一次循环
1+2+3+....+100
累加到第三个3的倍数时终止循环
1+ 2 +3 +4+5 + 6 +7 +8+9 = 45
1+2+3+....+100
忽略3的倍数和个位是3的数
i%3==0 i%10 ==3
1+2+4 + 5 +7+8+10+11+14+16+....
嵌套循环
for(){
for(){
}
}
//打印杨辉三角形
数组
什么是数组?
数组是内存中连续存储数据的空间,数组中存放的数据类型必须一致
int[] arr = new int[3];
String[] ss = new String[6];
数组是引用类型
数组中存放的数据称为数组的元素
8个基本类型数组元素的默认值
整数:byte short int long --- 0
浮点数:float double --- 0.0
布尔值:false
字符:''
对象数组元素的默认值是null
数组的length属性表示数组的长度
数组的读写(访问)
数组是通过下标去访问
数组的下标:0~数组的长度-1
排序 (冒泡 选择 插入 快速 希尔 ...)
n个数字来排队
两辆相比小靠前
外层循环 n-1
内层循环n-1-i
系统排序
Arrays.sort(数组);
package demo;
public class Demo01 {
// Alt + / + 回车
public static void main(String[] args) {
// syso + Alt +/+回车
// System.out.println("Hello World");
int a = 1;//标量
a = 2;
System.out.println(a);
String s = "你好";//引用类型
System.out.println(s);
}
}
2
你好
package demo;
import java.util.Scanner; //ctrl + shift + O 快捷键导包
public class Demo02 {
/**
* 条件运算
* 从控制台输入一个年龄
* 年龄>=18 ,输出成年了
* 否则,输出未成年
* @param args
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个年龄:");
int age = sc.nextInt();
String s = age>=18?"成年了":"未成年";
System.out.println(s);
}
}
package demo;
import java.util.Scanner;
public class Demo03 {
/**
* 从控制台输入一个学生成绩
* 90~100 输出优秀
* 80~89 输出良好
* 60~79 输出及格
* 0~59 输出不及格
* 其他 输出 "请输入正确的成绩"
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个成绩:");
//Ctrl + 1 + 回车 自动声明变量
int score = sc.nextInt();
/*
if(score>=90 && score<=100){
System.out.println("优秀");
}else if(score>=80 && score<=89){
System.out.println("良好");
}else if(score>=60 && score<=79){
System.out.println("及格");
}else if(score>=0 && score<=59){
System.out.println("不及格");
}else{
System.out.println("请输入正确的成绩");
}*/
//优化
/*
if(score<0 || score>100){//在第一个分支排除所有的错误输入
System.out.println("请输入正确的成绩");
}else if(score>=90){
System.out.println("优秀");
}else if(score>=80){
System.out.println("良好");
}else if(score>=60){
System.out.println("及格");
}else{
System.out.println("不及格");
}*/
//switch case重构
//排除错误的输入
if(score<0 || score>100){
System.out.println("请输入正确的成绩");
}
score /=10; // 95/10 = 9 66/10 = 6 6/10 = 0 100/10 = 10
//score 是一个0~10的整数
switch (score){
case 0:
case 1:
case 2:
case 3:
case 4:
case 5: System.out.println("不及格"); break;
case 6:
case 7:System.out.println("及格"); break;
case 8:System.out.println("良好"); break;
case 9:
case 10:System.out.println("优秀"); break;
}
}
}
package demo;
public class Demo04 {
/**
* 0~65535
* @param args
*/
public static void main(String[] args) {
int a = 'A';
System.out.println(a);
char ch = 97;
System.out.println(ch);
}
}
package demo;
public class Demo05 {
public static void main(String[] args) {
//while
/*
int sum = 0;//总和
int idx = 1;//循环变量
while(idx<=100){
//循环体
sum += idx;
idx++;
}
System.out.println("总和:"+sum);*/
//do while
/*
int sum = 0;//总和
int idx = 1;//循环变量
do{
//循环体
sum += idx;
idx++;
}while(idx<=100);
System.out.println("总和:"+sum);*/
//for循环 --标准化,结构化的循环
int sum = 0;//总和
for (int i = 1; i <=100; i++) {
sum += i;
}
/*
* for(循环变量初始化;循环条件判断;循环变量自增|自减){
* 执行循环体
* }
*
*
*
* */
System.out.println("总和:"+sum);
}
}
package demo;
public class Demo06 {
/**
* 1+2+3+....+100
累加到第三个3的倍数时终止循环
1+ 2 +3 +4+5 + 6 +7 +8+9 = 45
* @param args
*/
public static void main(String[] args) {
int sum = 0;//总和
int count = 0;//计数
for (int i = 1; i <=100; i++) {
sum += i;
if(i%3==0){//判断i是否时3的倍数
count++;
}
if(count==3){//刚好加完第三个3的倍数
break;
}
}
System.out.println("总和:"+sum);
}
}
package demo;
public class Demo07 {
/**
* 1+2+3+....+100
忽略3的倍数和个位是3的数
i%3==0 i%10 ==3
1+2+4 + 5 +7+8+10+11+14+16+....
*/
public static void main(String[] args) {
int sum = 0;//总和
int count = 0;//计数
for (int i = 1; i <=100; i++) {
if(i%3==0 || i%10==3){
continue;//忽略本次循环,本次循环continue之后的代码都不执行
}
sum += i;//累加
}
System.out.println("总和:"+sum);
}
}
package demo;
import java.util.Arrays;
public class Demo08 {
/**
* 数组
*/
public static void main(String[] args) {
int[] arr = new int[3];
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
String[] ss = new String[3];
for (int i = 0; i < ss.length; i++) {
System.out.println(ss[i]);
}
System.out.println(arr.length);//3
System.out.println(ss.length);//3
//给数组赋值
for (int i = 0; i <arr.length; i++) {
arr[i] = i;
}
//打印数组
//Arrays --数组工具类
String arrStr = Arrays.toString(arr);
System.out.println(arrStr); //[0, 1, 2]
for (int i = 0; i < ss.length; i++) {
ss[i] = "hello" + i;
}
System.out.println(Arrays.toString(ss));
}
}
package demo;
import java.util.Arrays;
public class Demo09 {
/**
* 冒泡排序
* @param args
*/
public static void main(String[] args) {
int[] arr = {12,7,89,16,33,78,100,234,55};//n就是数组的长度
//升序
//排序前
System.out.println(Arrays.toString(arr));
//排序 --升序
/*
int temp = -1;
for (int i = 0; i < arr.length-1; i++) {//外层循环n-1次
for (int j = 0; j < arr.length-1-i; j++) {//内层循环n-1-i次
//两两相比小靠前 -- 数组中相邻的两个元素
if(arr[j]<arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}*/
Arrays.sort(arr);
//排序后
System.out.println(Arrays.toString(arr));
}
}