跳转控制语句
break:只能在switch或循环语句中使用,不能单独使用.
switch(表达式){
case 值:
语句1;
break;
....
default:
语句n+1;
break;
}
continue:结束当前循环,并立即进行下一次循环.
class Sum{
public static void main(String[] args){
int sum=0;
for(int a=1;a<=10;a++){
sum+=a;
if(a==3){
continue;
}
System.out.println(sum);
}
}
}
return:一般不单独使用,在有具体返回值的方法中使用,结果一般都是具体的结果或值.
class Function{
public static void main(String[] args){
int a=1;
int b=3;
int sum=sum(a,b);
System.out,println(sum);
}
public static int sum(int a,int b){
retrrn a+b;
}
}
方法
什么是方法
使用功能代码块将功能{}包起来,并为之取一个名字,方法名符合小驼峰命名法;
格式
有具体返回值
修饰符 返回值类型 方法名(形式参数列表){
方法体;
return 值;
}
class Function{
public static void main(String[] args){
int a=1;
int b=3;
int sum=sum(a,b);
System.out,println(sum);
}
public static int sum(int a,int b){
retrrn a+b;
}
}
没有具体返回值
修饰符 void 方法名(形式参数列表){
输出语句;
}
class Function{
public static void main(String[] args){
int a=1;
int b=3;
sum(a,b);
}
public static void sum(int a,int b){
System.out.println(a+b);
}
}
注意事项
方法与方法是平级关系,不能嵌套定义;
定义方法的时候形参必须携带;
调用方法的时候实参可以不带数据类型;
乘法表
import java.util.Scanner;
class PrintXing{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入行");
int a=sc.nextInt();
System.out.println("请输入列数");
int b=sc.nextInt();
xing(a,b);
}
public static void xing(int a,int b){
for(int x=1;x<a;x++){
for(int y=1;y<x;y++){
System.out.print(x+"*"+y+"="+x*y+"\t");
}
System.out.println();
}
}
}
数组
定义
数组是一个能够存放同一数据类型数据的容器
定义格式
数据类型[] 数组名;
数据类型 数组名[];
初始化
数据类型[] 数组名=new 数据类型[长度];
自定义数组
数组类型[] 数组名=new 数据类型[]{数据};
简化
数据类型[] 数组名={};
注意事项
数组的定义不能动静结合;
数组就是引用类型,引用类型下面经常会出现异常:
java.lang.ArrayIndexOutOfBoundsException:数组角标越界异常
出现的原因:访问了数组中不存在的角标(索引值)
解决方法:检查代码,更改索引值
java.lang.NullPointerException:空指针异常
引用类型的默认值都是null;
String s = null ; 字符串是一种特殊的引用类型
出现的原因:某一个对象已经为空了,null(没有堆内存地址),这个时候还要去访问元素或者调用
这个对象的方法,那么就出现空指针;
解决方法:使用逻辑判断语句,对该对象进行非空判断
数组的遍历
class ArrayTest{
public static void main(String[] args){
int[] arr={12,56,43,21};
printArr(arr);
}
public static void printArr(int[] arr)
System.out.print("[");
for(int a=0;a<arr.length;a++){
if(a==arr.length-1){
System.out.println(arr[a]+"]");
}else{
System.out.print(arr[a]);
}
}
}
}
冒泡排序
class BubbleTest{
public static void main(String[] args){
int[] arr={12,56,43,21};
printArr(arr);
}
public static void printArr(int[] arr)
System.out.print("[");
for(int a=0;a<arr.length;a++){
if(a==arr.length-1){
System.out.println(arr[a]+"]");
}else{
System.out.print(arr[a]);
}
}
}
public static void bubble(int[] arr){
for(int num=0;num<arr.length-1;num++){
for(int x=0;x<arr.length-1-num;x++){
if(arr[x]>arr[x+1]){
int temp=arr[x];
arr[x]=arr[x+1];
arr[x+1]=temp;
}
}
}
}
}
数组的逆序
class ArrayTest{
public static void main(String[] args){
int[] arr={12,56,43,21};
printArr(arr);
reverse(arr);
printArr(arr);
}
public static void printArr(int[] arr)
System.out.print("[");
for(int a=0;a<arr.length;a++){
if(a==arr.length-1){
System.out.println(arr[a]+"]");
}else{
System.out.print(arr[a]);
}
}
}
public static void reverse(int[] arr){
for(int a=0;a<arr.length/2;a++){
int temp=arr[a];
arr[a]=arr[arr.length-1-a];
arr[arr.length-1-a]=temp;
}
}
}
}
面向对象
思想特点
1.符合我们生活中的思想行为习惯
2.让复杂的事情变得简单化
3.由执行者变成了指挥者(指挥对象)
面向对象的三大特征
继承,多态,封装
类
能够描述一组事物的属性和行为的集合
类与对象的关系
类:是一个泛指
对象:才是当前事物的具体的体现
局部变量和成员变量的区别
1.在类中的位置不同
局部变量在类中方法外
成员变量在方法中
2.在内存中的位置不听
局部变量在栈中
成员变量在堆中
3.生命周期不同
局部变量随着方法的调用而存在,随着方法的消失而消失
成员变量随着对象的创建而存在,随着对象的调用完毕,等待垃圾回收器空闲的时候回收
4.初始化时机不同
局部变量使用之前必须赋值;
成员变量使用之前可以不用赋值,系统会给它默认初始化变量;
对象名.成员变量 = 值;
类的使用
class Phone{
private String brand;
private double price;
private String color;
private int memory;
public void setBrand(String brand){
this.brand=brand;
}
public String getBrand(){
return brand;
}
public void setPrice(double price){
this.price=price;
}
public double getPrice(){
return price;
}
public void setColor(String color){
this.color=color;
}
public String getColor(){
return color;
}
public void setMemory(int memory){
this.memory=memory;
}
public int getMemory(){
return memory;
}
public void call(String name){
System.out.println("给"+name+"打电话");
}
public void play(String name){
System.out.println("在玩"+name);
}
public String send(String information){
return "发短信的内容是"+information;
}
}
class PhoneTest{
public static void main(String[] args){
Phone p=new Phone();
p.setBrand("华为");
p.setColor("blue");
p.setPrice(4523.45);
p.setMemory(256);
System.out.println("我的手机品牌是:"+p.getBrand()+",它的颜色是:"+p.getColor()+",他的价格 是:"+p.getPrice()+",他的内存是:"+p.getMemory()+"GB.");
p.play("王者荣耀.");
p.send("我在上自习.");
}
}
匿名对象
匿名对象:
顾名知意:没有名字的对象
创建对象的格式:
类名 对象名 = new 类名() ;
匿名对象的格式:
new 类名() ;
好处:
1)节省内存空间
2)开发中,匿名对象一般 使用"一次即可",使用完毕就立即垃圾回收器回收!
3)手机移动端/Android/鸿蒙系统:基于Java语言
ios系统:基于c语言
访问类的成员变量:
new 类名().成员变量名;
访问类的成员方法:没有具体返回值类型
new 类名().成员方法名() ;
封装
private:私有的,不能直接访问的;
特点:
被private修饰的成员变量或者是成员方法,只能在本类中访问;
外界类是不能直接访问的,间接可以通过公共的成员方法访问!
权限修饰符:
private :最小
public: 最大
封装:
将一个真实类的属性私有化,同类可以直接访问,不同类不能直接访问,构造一个对外的公共访问类,间接访问.
setXXX()/getXXX();
test:
class Phone{
private String brand;
private double price;
private String color;
private int memory;
public void setBrand(String brand){
this.brand=brand;
}
public String getBrand(){
return brand;
}
public void setPrice(double price){
this.price=price;
}
public double getPrice(){
return price;
}
public void setColor(String color){
this.color=color;
}
public String getColor(){
return color;
}
public void setMemory(int memory){
this.memory=memory;
}
public int getMemory(){
return memory;
}
public void call(String name){
System.out.println("给"+name+"打电话");
}
public void play(String name){
System.out.println("在玩"+name);
}
public String send(String information){
return "发短信的内容是"+information;
}
}
class PhoneTest{
public static void main(String[] args){
Phone p=new Phone();
p.setBrand("华为");
p.setColor("blue");
p.setPrice(4523.45);
p.setMemory(256);
System.out.println("我的手机品牌是:"+p.getBrand()+",它的颜色是:"+p.getColor()+",他的价格是:"+p.getPrice()+",他的内存是:"+p.getMemory()+"GB.");
p.play("王者荣耀.");
p.send("我在上自习.");
}
}
this关键字
this:代表当前类对象的地址值引用
构造方法
什么是构造方法
构造方法是一个特殊的方法,它的方法名与类名相同.
特点
1.方法名与类名相同
2.没有返回值
3.没有void
4.构造方法是重载的
作用
对类中的数据(成员变量)进行初始化
无参构造方法(没有形参列表)
public 类名(){}
有参构造方法(有参数列表)
public 类名(数据类型 成员变量1,数据类型 成员变量2...){
this.成员变量1=
this.成员变量2=
}
注意事项
我们不提供无参构造方法和有参构造方法的时候,系统会默认给我们提供无参构造方法.
假如我们写了有参构造方法,系统就不会提供无参按构造方法了,因此我们需要自己提供无参构造方法.
给成员变量(私有修饰)赋值几种方式:
1)公共的访问方法setXXX(xx):赋值
2)有参构造方法进行赋值
public 类名(参数类型1 变量名1,参数类名2 变量名2...){
this.成员变量名1 = 变量1;
this.成员变量名2 = 变量2 ;
...
}
一个标准类
class Phone{
private String brand;
private double price;
private String color;
private int memory;
public phone(){}
public phone(String brand,double price,String color,int memory){
this.brand=brand;
this.price=price;
this.color=color;
this.memory=memory;
}
public void setBrand(String brand){
this.brand=brand;
}
public String getBrand(){
return brand;
}
public void setPrice(double price){
this.price=price;
}
public double getPrice(){
return price;
}
public void setColor(String color){
this.color=color;
}
public String getColor(){
return color;
}
public void setMemory(int memory){
this.memory=memory;
}
public int getMemory(){
return memory;
}
public void call(String name){
System.out.println("给"+name+"打电话");
}
public void play(String name){
System.out.println("在玩"+name);
}
public String send(String information){
return "发短信的内容是"+information;
}
}
class PhoneTest{
public static void main(String[] args){
Phone p=new Phone();
p.setBrand("华为");
p.setColor("blue");
p.setPrice(4523.45);
p.setMemory(256);
System.out.println("我的手机品牌是:"+p.getBrand()+",它的颜色是:"+p.getColor()+",他的价格是:"+p.getPrice()+",他的内存是:"+p.getMemory()+"GB.");
p.play("王者荣耀.");
p.send("我在上自习.");
}
}