1 冒泡排序
2 二维数组
3 类与对象
4 对象的使用和内存空间
5 面象对象的封装性
1 、冒泡排序
int [] a =new int []{9,7,4,6,5,3,1,2,8,0};
//外循环控制比较的趟数 (数组的长度-1 ),内循环控制两两比较
for (int i = 0; i <a.length-1 ; i++)
{
for(int j=0;j<a.length-1-i;j++)
{
if(a[j]>a[j+1])
{
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
2 、二维数组
二维数组 : 有一个数组,它的每个元素,都是数组类型的
二维数组的声明
int [] x [] //可以
int [][] x //可以
int [][] xx=new int [3][] //xx是一个二维数组,它里面有3个元素(每个元素都是一个数组), 但是,每个元素(数组)的长度是不确定
//此时取 System.out.println(xx[0]); 得到null , System.out.println(xx[4]); 脚标越界
int [][] xx= new int [][] //不合法 连数组中有几个元素都不知道
int [][] xx= new int [][5] //不合法
int [][] xx= new int [3][50]
//合法,数组中有三个元素(每个元素又是一个数组,这个数组中有50个元素)
xx[0][0]=20 //给第一个元素赋值
xx[2][49]=90 //给最后一个元素赋值 或 xx[2][xx[2].length-1]=90;
练习 声明一个 3* 4 的二维数据,随机生成数据,最后求数组中所有元素的合
public static void main(String[] args) {
int [] [] x =new int [3] [4];
//用随机数给数组赋值
for(int i=0;i<3;i++)
{
for(int j=0;j<4;j++)
{
x[i][j]=(int)(Math.random()*10);
}
}
//求合
int s=0;
for(int i=0;i<3;i++)
{
for(int j=0;j<4;j++)
{
s+=x[i][j] ;
}
}
System.out.println("总合是"+s);
}
3、类与对象
面象对象,相对于面向过程而言,是一种编程思想
面象对象编程的三大特征 封装,继承,多态
类:对现实生活中事务的抽象描述 //水果
对象: 这类事务具体的实实在在的存在的一个个体 //哈蜜瓜
如果对应在java中,类就是用class定义的 类
对象,就是new 出来的实体
站在面象对象的角度上,理解
int x=5
int 就是类, x 就是对象
//例子,类的声明
//在类体中,只有两种东西 属性(直接定义在类体中的变量),方法(函数)
class Cat
{
String name ; //猫的名字
int age; //猫的年龄
void shout()
{
System.out.println("喵喵~~");
}
}
//例子 设计一个计算器,能进行一个加法计算
public class Calc
{
String 样式 ="方形";
String 颜色="绿色" ;
//这个计算器提供一个方法,能进行加法运算
int add (int a,int b)
{
return a+b;
}
}
class Test{
public static void main(String[] args)
{
int a=90;
int b =40;
Calc jisuanqi =new Calc(); //使用计算器类创建一个类对象
int result= jisuanqi.add(a, b);
System.out.println(result);
}
}
4、对象的使用和内存空间
-- 内存分配情况
public class Cat
{
int age;
String name;
void speak()
{
System.out.println("我的年龄是 "+age +"我的名字是 "+name);
}
}
//使用的时候
Cat c=new Cat();
c.speak(); -> 我的年龄是 0我的名字是 null //说明,对象中的属性,有默认的初值
-- 匿名对象
new Cat().speak() //经过这个操作后,它马上成为垃圾
new Cat().age =90- 这样的操作,没有任何意义
使用场景
= 做为参数传递
= 对象中的方法,只执行一次
5、面象对象的封装性
隐藏对象的属性 ,和方法的实现细节,对外提供公共的方法访问
-- 将复杂的操作封闭在方法的内部,内部细节对外不可见
-- 将方法或属性进行封闭,外界不可见
提高安全性,提高可重用性,将变化隔离
public class Student
{
private int age;
private String stuName;
private String school; //alt _shift _s
void study() {
System.out.println("学生正在学生");
}
void introduce(){
System.out.println("我叫"+stuName+"我的年龄 "+age+" 我的学校" +school);
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
}
class Test2{
public static void main(String[] args) {
Student stu=new Student();
stu.setAge(19);
stu.setSchool("北大");
stu.setStuName("高洪喜");
stu.study();
stu.introduce();
}
}