alt+/ | 自动补全 |
---|---|
Ctrl+/ | 对语句进行注释 |
首先明确javac.exe是用来编译软件的
Java.exe是用来运行Java程序的
配置说明参考这篇文章
Project——Module——Package
文件名前*代表文件未保存
查看正在运行着的程序(防止死机)
printf主要是继承了C语言的printf的一些特性,可以进行格式化输出
print就是一般的标准输出,但是不换行
println和print基本没什么差别,就是最后会换行
————————————————0518
单行注释:
多行注释:
文档注释:
———————————————0519
布尔类型(不可进行计算)
浮点类型:
区分&& 与 & ,
3. 三元表达式(十分有用,做条件判断)
需要定义布尔类型 Boolean 类型
比较最大值
/*int x=10; int y=10; boolean b=(x==y) ? true:false;//定义布尔类型变量 /*int z; z=(x>y)?x:y;*/ max= (a>b) ? a:b; max= (max>c) ? max:c;
import java.util.Scanner; //导包,注意位置在class上面,导入包中的类Scanner class demo_scanner { public static void main(String[] args) { Scanner sck =new Scanner(System.in); //创建键盘录入对象 System.out.println("请输入一个整数:"); int x = sck.nextInt(); //将键盘录入的数据存储在x中 System.out.println(x); } }
问题原因:System.out.printIn©;中 l 应为小写的L
nextInt() 中的 I 为大写的 i;
是不是很坑啊!!!!
if(x==1){ System.out.println("男厕所欢迎你"); }else if (x==0) { System.out.println("女厕所欢迎你"); }else{ System.out.println("无法识别你的性别"); }
switch(表达式){ //基本数据类型可以接受 byte,short,char ,int case 值1 : //引用可以接受枚举和string字符串 语句体1; break; case 值2 : ... default:
String XXX=“ ”;——定义字符串
‘\t’ | tab键的位置 |
---|---|
‘\r’ | 回车 |
‘\n’ | 换行 |
‘\‘’ | ’ |
‘\n’ | 换行 |
break
有时候我们想在某种条件出现的时候终止循环而不是等到循环条件为false才终止。
这时我们可以使用break来完成。break用于完全结束一个循环,跳出循环体执行循环后面的语句。
var str = "hello"; for (var item of str){ if(item ==="l"){ break } console.log(item); // h e }
continue
continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环。
可以理解为continue是跳过当次循环中剩下的语句,执行下一次循环。
var str = "hello"; for (var item of str){ if(item ==="l"){ continue } console.log(item); // h e o }
mark
return
import java.util.Scanner; class test_method1 { public static void main(String[] args) { System.out.println("Please enter the first number:"); Scanner sc=new Scanner(System.in); int x =sc.nextInt(); System.out.println("Please enter the second number:"); int y=sc.nextInt(); //int c=max(x,y); System.out.println("The maxist one is:"+max(x,y)); //注意:返回值是void方法,即返回值为空时不能输出调用 } public static int max(int a,int b){ /*if (a>b) { return a; }else{ return b; }*/ return a>b ?a : b; //简化方法,三元选择语句 } }
方法重载:指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返
回值类型无关。
参数列表:个数不同,数据类型不同,顺序不同。
重载方法调用:JVM通过方法的参数列表,调用不同的方法。
格式:
int [ ] arr(数组名字为arr) =new int[5]
数组定义格式详解:
数组存储的数据类型: 创建的数组容器可以存储什么数据类型。 [] : 表示数组。
数组名字:为定义的数组起个变量名,满足标识符规范,可以使用名字操作数组。
new:关键字,创建数组使用的关键字。
数组存储的数据类型: 创建的数组容器可以存储什么数据类型。
[长度]:数组的长度,表示数组容器中可以存储多少个元素。
注意:数组有定长特性,长度一旦指定,不可更改。
1、arr=NULL; 数组覆盖为空
//获取数组中的最值 class array_max { public static void main(String[] args) { int[] arr={22,33,66,11,99}; System.out.println("最大值是:"+getMax(arr)); } public static int getMax(int[] arr){ //定义最值方法,有返回值不用void int max = arr[0]; for(int i=1;i<arr.length;i++){ //获取数组长度的方法 if(max<arr[i]){ max=arr[i]; } } return max; //记住一定要有返回值 } }
//将数组元素对调 class array_reverse /*{ public static void main(String[] args) { int [] arr={12,22,33,44,66}; reverse(arr); System.out.println("------------------------------"); for(int i=0;i<arr.length;i++){ System.out.println(arr[i]); } } public static void reverse(int [] arr){ int a =arr.length; int[] arr1=new int[a]; for(int i=0;i<a;i++){ arr1[i]=arr[a-i-1]; } for(int i=0;i<a;i++){ arr[i]=arr1[i]; System.out.print(arr[i]+"\t"); } } } */ //参考程序 { public static void main(String[] args){ int[] arr={11,22,33,44,55,66}; reverse(arr); print(arr); //一定要记得调用函数,否则不会有输出结果 } public static void reverse(int[] arr){ for(int i=0;i<arr.length/2; i++){ //将arr[o]与arr[arr.length -1]进行交换 int temp= arr[i]; arr[i]=arr[arr.length-1-i]; arr[arr.length-1-i]=temp; } } public static void print(int[] arr){ for(int i=0;i<arr.length;i++){ System.out.print(arr[i] + " "); } } }
import java.util.Scanner; class getday { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int week =sc.nextInt(); System.out.println("您输入的是星期"+get(week)); } public static char get(int day){ char[] arr={' ','一','二','三','四','五','六','七'}; //注意字符类型数组的创建方式 return arr[day]; } }
int [][] arr= new int[3][2];
class array2search { public static void main(String[] args) { int[][] arr={{1,2,3},{4,5},{6,7,8,9}}; for(int i=0;i<arr.length;i++){ //获取每个二维数组中的一维数组 for(int j=0;j<arr[i].length;j++){ //获取一维数组中的各元素 System.out.print(arr[i][j]); } System.out.println(); //打印完一行再换行 } } }
class arrbubble { public static void main(String[] args) { int[] arr={11,45,23,66,54}; for(int i=1;i<arr.length;i++){ //比较相邻两个元素,较大的往后冒泡 for(int j=0;j<(arr.length-i);j++){ if(arr[j]<arr[j+1]){ int temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } print(arr); System.out.println("This future!!!"); } public static void print(int [] arr){ //遍历数组 for(int i=0;i<arr.length;i++){ System.out.print(arr[i]+" "); } } }
主要区分于面向过程,就是一步一步地执行
Java程序语言在一个个对象里面运行,即封装好
class phone{ String brand; int price; //定义属性 public void call{ System.out.println("打电话"); //定义行为 } }
class demo_student { public static void main(String[] args) { //创建对象的格式:类名 对象名=new 类名(); //对象名:其实就是合法的标识符 Student s=new Student(); //注意后面右括号 //使用成员变量:对象名.变量名 s.name="张三"; s.age=23; s.study(); s.sleep(); System.out.println(s.name+"...."+s.age); //注意输出方法 } } class Student { String name; int age; String gender; public void study(){ System.out.println("学生学习"); } public void sleep(){ System.out.println("学生睡觉"); } }
栈——堆——方法区
应用数据类型作为形式参数
Student s=new Student();
public static void print(Student) //这里就是引用数据类型,引用类型传递的是地址,可以用 使用成员变量:对象名.变量名 调用其属性
public static void print(int x) //这里就是基本数据类型
new 类名().方法名();
适用场合:匿名对象只适合对方法的一次调用,
注意:匿名对象不可调用属性,或者说调用没有意义,调用后地址没有进入栈中,会被当做垃圾处理。
把属性隐藏,提高安全性
class demo_private { public static void main(String[] args) { Person p1= new Person(); p1.name="小土豆"; p1.setAge(-18); System.out.println(p1.getAge()); } } class Person { String name; private int age; public void setAge(int a){ if(a>0 && a<100){ age=a; }else{ System.out.println("你可以死几次了"); } } public int getAge(){ return age; } }
1、使用private修饰成员 变量
2、提供 getXXX方法 和 setXXX方法,可以访问成员变量
public class Student { private String name; private int age; // 无参数构造方法 public Student() {} // 有参数构造方法 public Student(String name,int age) { this.name = name; this.age = age; } }
public class ClassName{ //成员变量 //构造方法 //无参构造方法【必须】 //有参构造方法【建议】 //成员方法 //getXxx() //setXxx() }
class test_rectangle { public static 2void main(String[] args) { Rectangle r=new Rectangle(10,20); //调用并构造新对象 System.out.println(r.getLength()); System.out.println(r.getArea()); System.out.println("This future!!!"); } } //定义一个长方形类,定义求周长、面积的方法 class Rectangle { private int width; private int high; public Rectangle(){} // 空参构造 public Rectangle(int width,int high){ this.width=width; //有参构造 this.high=high; } public void setWidth(int width){ this.width=width; } public int getWidth(){ return width; } public void setHigh(int high){ this.high=high; } public int getHigh(){ return high; } public int getLength(){ //获取周长 return 2*(width+high); } public int getArea(){ //获取面积 return width*high; } }
1、通俗来说:加了static后,所有关键词赋值一次,即可重复调用,多个对象共享一个属性值
关于 static 关键字的使用,它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属于某个对象的。也就是说,既然属于类,就可以不靠创建对象来调用了。
2、使用特点
共性用静态,个性用非静态。
可以使用类名调用。
Person p1 =new Person(); //创建对象 p1.name="泰勒斯威夫特"; p1.coun="加拿大"; //调用对象的属性 //静态关键字也可使用类名调用 Person.coun="USA";(无需创建对象) p1.speak(); //输出完成后弹栈
3、注意事项
class demo_static2 { public static void main(String[] args) { demo d= new demo(); d.print2(); } } class demo { int num1=10; static int num2=20; /*public void print1(){ //非静态成员方法,既可以访问静态也可以访问非静态 System.out.println(num1); System.out.println(num2);*/ public static void print2(){ System.out.println(num1); //静态的成员方法无法访问非静态的,报错。因为静态方法可以不创建对象,非静态建立在对象之上 System.out.println(num2); } }
1、public
static
void
main
String[] args: args 代表参数
程序1
class demo_ArrayTool { public static void main(String[] args) { int[] arr={33,22,66,11,44,55}; ArrayTool aa = new ArrayTool(); int max=aa.getMax(arr); System.out.println(max); } }
程序2
class ArrayTool { //1 获取最大值 public int getMax(int[] arr){ int max=arr[0]; for(int i=1;i<arr.length;i++){ if(arr[i]>max){ max=arr[i]; } } return max; //将最大值返回 } public void print(int[] arr){ for(int i=0;i<arr.length;i++){ //遍历数组 System.out.print(arr[i]+" "); } } public void revArray(int[] arr){ for(int i=0;i<arr.length/2;i++){ int temp=arr[i]; arr[i]=arr[arr.length-1-i]; arr[arr.length-1-i]=temp; } } }
程序放在一块能运行
软件说明注释```
math库官方文档
random ——随机数生成
不需要进行库的引用
练习——生成1-100随机数
class demo2_Math { public static void main(String[] args) { for(int i=0;i<10;i++){ System.out.println((int)(Math.random()*100)+1);//注意这里生成随机数的方法 } //生成1—100随机数 } }
每创建一次对象就会执行一次,优先于函数执行
将多个代码块中系统部分放到一起,避免重复调用
优先于主方法执行
随着类加载而加载,执行一次
class demo_code { public static void main(String[] args) { { int x=10; //限定变量的声明周期 System.out.println(x); } Student s1=new Student(); //调用空参对象 System.out.println("*********************************"); Student s2=new Student("Future",22); //调用有参对象 } } class Student { private String name; private int age; public Student(){ System.out.println("*空参构造"); } //空参构造 public Student(String name,int age){//有参构造 this.name=name; this.age=age; System.out.println("*有参构造"); } public void setName(String name){ this.name=name; } public String getName(){ return name; } public void setAge(int age){ this.age=age; } public int getAge(){ return age; } { //构造代码块:每创建一次对象就会执行一次,优先于函数执行 System.out.println("*构造代码块"); } static{ System.out.println("静态代码块"); //随着类的执行而执行,且只执行一次 } //作用:用来给类做初始化,一般用来加载驱动;优先于主方法执行 }
总结:执行顺序:主方法类中的静态代码块(执行一次)
主方法(执行一次)
静态代码块(执行一次)
构造代码块
构造方法(调用多次,执行多次)
1、提高代码复用性
2、extends 继承父类的属性,可以理解为是对模板的引用和调用
格式 class 个体名 extends 父类名
3、好处
缺点:耦合性特别强