快捷键
shift + alt + 上下键 //移动行
ctrl + d //复制行
alt + / //自动代码
变量与常量
变量可变,常量不可变
常量声明时候添加final 不可变
常量的命名法则:全部大写,如果有多个单词用_隔开 比如:MAX_VALUE
变量的命名规则:首字母必须是 字符 $ _ 后续必须是 字符 $ _ 0到9
命名不能为关键字
类名用大驼峰(手写字母大写) 变量名用小驼峰(先小写后大写) 循环因子用 i j k
运算符
+= 例:age += 2 等于age = age+ 2
++ 例:age ++ 等于age = age+ 1
Scanner用法
监听键盘输入Scanner
强转语法:(目标类型)表达式
Scanner scanner = new Scanner(System.in);
与 或 非
&& 与 只要有一个假,结果就是假
|| 或 只要有一个真,结果就是真
!: 非 原来假结果真,原来真结果假
例子:
public class Demo1 {
public static void main(String[] args){
//只有两门都满足90就可以去动物园
Scanner scanner = new Scanner(System.in);
System.out.println("请输入语文成绩:");
int yuWen = scanner.nextInt();
System.out.println("请输入数学成绩:");
int shuXue = scanner.nextInt();
if (yuWen>=90 && shuXue>=90)System.out.println("可以去动物园");
else System.out.println("回家休息");
}
}
随机数与字符串比较
Math.random() 产生一个 [0.0 ~ 0.1) 之间的小数
== 适用于基本数据类型:byte short int long float double boolean 的比较
.equals()方法 可以比较字符串 要求完全相等 区分大小写
循环
while循环
public class Demo2 {
public static void main(String[] args) {
/*
while(条件){
循环的体(内容)
更新条件;
}
*/
int i = 1,sum = 0 ; //任何变量在使用前都要赋值
while (i<=100){ //千万不能有分号;
sum += i;
i++;
}
System.out.println(sum);//0加到100 5050
}
}
do while循环
如果事先知道循环体肯定至少会走一次就用do while
/*
do {
循环的体(内容)
更新条件;
}while(条件)
*/
int i = 1,sum = 0 ; //任何变量在使用前都要赋值
do {
sum += i;
i++;
}while (i<=100); //这里不写分号会报警
System.out.println(sum);
for循环
循环次数固定下来时建议采用for循环
for(声明初始化循环变量;条件;修改循环变量){ //可写多个变量,使用逗号隔开
循环体;
}
for(;;){ //死循环 类似于while(true)
System.out.println(sum);
}
//死循环,无法循环到后方代码
break 结束当前循环
public class Demo2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
for (int i = 1;i<= 5; i++){
System.out.println("成绩:");
int cj = scanner.nextInt();
if (cj < 0 ) break;
}
System.out.println("输入错误 退出");
}
}
continue 忽略本次不符合的循环数据
public class Demo2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int sum =0;
for (int i = 1;i<= 5; i++){
System.out.println("成绩:");
int cj = scanner.nextInt();
if (cj < 0 ) continue; //不会结束循环 返回 i++ 的位置 忽略当此数据
sum += cj;
}
System.out.println("和:" + sum);
}
}
断点调试
点击左侧可生成红点开启断点调试 红色点为开启初始点
请选择Debug开启调试
可以查看每次运行时的结果
数组
int[ ] 数组
int[] arr = new int[3]; //声明分配空间非同一行 则需要 new int[]
arr[0] = 11;
arr[1] = 22;
arr[2] = 33;
int[] arr2 = {11,22,33}; //如果声明分配空间赋值在一行 可以省略 new int[]
数组.length 为数组的长度
数列输出与判断及三元操作
double money [] = new double[5];
public class Demo2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[] arr = {8,4,2,1,23,344,12}; //如果声明分配空间赋值在一行 可以省略 new int[]
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
System.out.println(sum);
System.out.println("请输入数字:");
int num = scanner.nextInt();
boolean sumFind = false;
for (int i = 0; i < arr.length; i++) {
if (num == arr[i]){
sumFind = true;
break;
}
}
System.out.println(sumFind ? "存在":"不存在"); //唯一的三元操作 布尔值 ? 真的反馈 : 假的反馈
}
}
Arrays的各类方法
/*
boolean equals(array1,array2); 比较array1和array2两个数组是否相等
sort(array) 对数组array的元素进行升序排列
String toString() 把数组array转换成一个字符串
void fill (array,val) 把数组array所有元素都赋值val
copyOf() 把数组array复制成一个长度为length的新数组,返回类型与复制的数组一致
int binarySearch(array,val) 查询元素值val再array中的下标(要求数组中的数据已经按升序排列)
*/
冒泡算法
import java.util.Scanner;
public class Demo2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入排序数字:");
int shuZ [] = new int[5];
for (int i = 0; i < shuZ.length; i++) {
System.out.println("请输入第" + (i+1) + "个数字");
int jinE = scanner.nextInt();
if (jinE <= 0)continue;
shuZ[i] = jinE;
}
//二重循环 冒泡算法
//外层循环n-1
for (int i=0;i<shuZ.length-1;i++){
//内层循环n-1-i
for (int j=0;j<shuZ.length-1-i;j++){
if (shuZ[j] > shuZ[j+1]){
int temp = shuZ[j];
shuZ[j] = shuZ[j+1];
shuZ[j+1] = temp;
}
}
}
for (int i = 0; i < shuZ.length; i++) {
System.out.println(shuZ[i]);
}
}
}
二维数组
public class Demo2 {
public static void main(String[] args) {
int[][] arr = { //声明 new int 分配空间赋值 此处已省略
{1,2,3,4,5},
{6,7,8,9,10},
{11,12,13,14,15}
};
System.out.println(arr.length);
//二重循环
//外层循环 行数
for (int i = 0; i < arr.length; i++) { //arr.length是行数 3
for (int j = 0; j < arr[i].length; j++) { // arr[i]是第i行
System.out.println(arr[i][j] + "\t"); //[i] 是行号数 [j] 是行号下标
}
System.out.println();//换行
}
}
}
函数
基础函数
public class Demo2 {
/*
方法 不调用不执行
参数 必须给定
*/
public static void main(String[] args) {
fa01(); //没返回值的函数 不能接收
fa02(); //有返回值的函数 可以接收
int i = fa02();
System.out.println(i);
f03(18,"张三");
}
/*
公共的访问修饰符 public 静态的 static 没有返回值 void 方法名(参数列表)
方法体
*/
public static void fa01() {
System.out.println("f01被调用了");
}
/*
公共的访问修饰符 public 静态的 static 有返回值 int 方法名(参数列表)
方法体
return 数字;
*/
public static int fa02() {
System.out.println("f01被调用了");
return 100;
}
public static void f03(int age,String name){
System.out.println("f03被调用,年龄" + age +",名字:" + name );
}
}
函数重载
public class Demo2 {
/*
函数重载原则
方法名相同
参数列表不相同
注意:
与返回值无关
*/
public static void main(String[] args) {
fa01(1.5); //money
fa01(1); //age
}
public static void fa01(double money) { //double
System.out.println("f01(double money)被调用了");
}
public static int fa01(int age) { //int
System.out.println("f01(int age)被调用了");
return 100;
}
}
传递可变个数参数和foreach循环输出
public class Demo2 {
public static void main(String[] args) {
fa01(new int[]{1,2,3,4,5});
fa01();
fa01(1);
fa01(1,2);
fa01(1,2,3);
}
public static void fa01(int... arr) { //无论如何传参数 arr最终是int[]一维数组 ...兼容所有位数(数量)
System.out.println("f01(double money)被调用了");
//自动循环arr数组 程序知道何时结束 每次取出一个送到变量a上
for (int a : arr){ //foreach输出(增强版) 没有下标了
System.out.println(a);
}
}
}
评论区