day05:数组
数组:是一种容器,用来存储多个相同类型的数据
特点:1.数据时一种引用类型;
2.数组中的多个数据,类型必须统一;
3.数据的长度在程序运行期间不可修改。
数组的初始化:在内存当中创建一个数组,并向其中赋予一些默认值;
1.动态初始化(指定长度);
格式: 数据类型[] 数组名称 = new 数据类型[数组长度];
2.静态初始化(指定内容)
格式1.: 数据类型[] 数组名称 = new 数据类型[] {元素1,元素2,元素3,...};
省略格式2.:数据类型[] 数组名称 = {元素1,元素2,元素3,...};
静态初始化省略格式,不能拆分为两个步骤。
数组长度一旦确定,就不能改变。
直接打印数组名称,得到的是数组对应的:内存地址哈希值。
访问数组元素的格式:数组名称[索引值]
注意:索引值从0开始,一直到“数组的长度-1”为止
Java中的内存划分(5个部分):
1.栈(Stack):保存的是方法中的局部变量(或者说{内容})。方法的运行一定要在栈中运行。
2.堆(Heap):凡是new出来的东西,都在堆中,new出的内容是有一个地址值
3.方法区(Method Area):存储.class相关信息,包含方法的信息。
获取数组的长度(格式):int len = 变量名称.length;
数组的遍历:挨个输出数组中的元素
快捷键:array.fori --->for (int i = 0; i < array.length; i++) {}
Shift+F6更改同样命名的内容
Ctrl+D复制上一行
06类与对象,
面向过程思想:事必躬亲
面向对象思想:找一个能做这个事情的人(对象),让它去做
(1)类:是一类事物的描述(很广泛),是抽象的。如:电脑,鼠标,水杯
(2)对象:是一个具体的东西
定义一个类,用来模拟“学生”事物,其中有两个部分:属性(是什么,如姓名,年龄)和方法(能做什么,
如吃饭,睡觉,学习)。对应到Java类中:成员变量(属性),成员方法(行为)
类的注意事项:
1.成员变量是直接定义在类中的,在方法外面
2.成员方法不要写static关键字
当一个对象作为参数,传递到方法中时,实际上传递的是对象地址值
局部变量和成员变量区别:
1.定义位置不一样,局部变量在方法的内部,成员变量在方法的外部,直接写在类当中
2.作用范围不一样,
局部变量只有方法中才可以使用,出了方法就不能再用
成员变量整个类都可以使用
3.默认值不一样:
局部变量没有默认值,成员变量有默认值,跟数组一样
面向对象的三大特征:封装,继承,多态
封装在Java中的体现:
1.方法就是一种装
2.关键字private也是一种封装
封装就是将一些细节信息隐藏起来,对于外界不可见
this 关键字的作用:
当参数的名字和成员变量名字一样的时候,有一个区分作用。
构造方法:用于创建对象的同时就给成员变量赋值 格式:public 类名(){}
当new对象的时候,构造方法会被调用(不写构造方法,会默认送个无参数的构造方法
;写了有参数的构造方法,默认的无参数构造方法不会送)。
day07-Scanner,Random
Scanner 扫描器,扫描键盘上的字母数字是否被按下
格式:Scanner sc = new Scanner(System.in);
int a = sc.nextInt();//数值型
String b =sc.next();//字符串
匿名对象: new 类名称();匿名对象只能使用唯一的一次,下次再用不得不再创建一个对象
Random:产生随机数字的
Random r = new Random();//创建随机数对象
int num = r.nextInt();// -21亿到21亿
int num = r.nextInt(100);//bound表示边界,范围[0,100)
int num = r.nextInt(91) + 10;//bound表示边界,范围[10,100]
// max-min+1 min 生成指定范围的随机数
对象数组:类名称[] 变量名称 = new 类名称[长度];
ArrayList<E>:它是一个容器,它的大小可以随着数据的增加而自动扩容。
<E>: 泛型,表示容器能存储的数据类型是什么,仅仅是引用类型,不能基本类型
创建集合的格式:ArrayList<String> list = new ArrayList<>();
常用方法:list.size() ; list.add(内容);list.get(索引);list.remove(索引);
如果向集合ArrayList当中存储基本数据类型,必须使用基本类型对应的“包装类”
基本数据类型对应的包装类
byte Byte
short Short
int Integer【特殊】
char Character【特殊】
...其他首字母大写
如:ArrayList<Integer> list = new ArrayList<>();
08 String Static Array类 Math类
String字符串:
1.字符串在创建之后用不可变;如果发生改变,实在原来的基础上新建一个字符串;
2.字符串是可以共享使用
3.字符串相当于char[] 字符数组,但是底层原理是byte[] 字节组。
注意:直接写上双引号(不写new),就是字符串的对象。有时候必须用new的
方式创建字符串,因为要做数据类型的转换。
String的常见构建方法3+1(直接)
public String(): //创建一个空白字符串,来创建对应的字符串。
public String(char[] array): //根据字符数组内容,来创建对应的字符串
public String(byte[] array): //根据字节数组内容,来创建对应的字符串
字符串常量池:程序中直接写上的双引号字符串,就在字符串常量池中。
String 常见的方法:
a.equals(b)比较字符串内容是否相同;a.equalsIgnorCase(b):忽略大小写比较字符串内容
注意:比较一个变量,一个常量时,把常量放前面,如:"abc".equals(str)
str.length():获取字符串的长度;
str1.concat(str2):拼接成全新的字符串(创建新的str)
str.charAt(int index):获取指定索引的单个字符
str.indexOf("内容"): 返回本字符串当中首次出现的索引位置,为-1是没出现
str.substring(int index):截取从参数位置一直到字符串末尾,返回新字符串
str.substring(int begin,int end):截取从begin开始,一直到end结束,中间的字符串。
备注:[begin,end)左闭右开
String与转换的相关的常用方法有:
str.toCharArray():将字符串拆分为字符数组作为返回值
str.getBytes():获得当前字符串的底层字节数组
str.replace(str oldstr ,str newstr):将原字符替换成新的字符
str.split(String regex):分割字符串
注意:String s = "张三.19.男"; ----> String []= s.split("\\.");特殊的字符如:".","+",加转译符号"\\"
static关键字:
static关键字的变量内存图,在方法区当中;
在方法上加了static的方法...称之为类方法,可以直接通过 类名.方法名调用
没有加上static方法,调用方式:先创建对象
,然后通过对象名.方法名()来调用
一旦用了static关键字,那么这样的内容不再属于对象自己,而是属于类的。
1.stati静态不能直接访问非静态,原因:内存中先有静态内容,后有非静态内容
2.静态中不能使用this关键字
静态代码块
1.它的执行时间是,类加载的时候(JVM知道马上就要创建staticClass)就执行了,比构造方法更快
2.静态代码块只会执行一次
工具类:类中所有的内容(成员变量,成员方法)都是static的,这样的类称之为工具类。
Arrays:针对数组的工具类
Arrays.sort();//对数组进行排序,从大到小。
Array.toString();//打印返回一个字符串,内容是数组中所有数据的拼接结果
Math 类:针对数学运算的static方法
09 继承(extends)
集成主要解决的问题就是:共性抽取。
特点:
1.子类可以拥有父亲的“内容”;2.子类还可以拥有自己的专属内容。
子类和父类出现了同名的成员变量时,子类需要访问父类的变量需要使用super关键字。中
方法重写(override):在继承关系当中,方法的名称,参数列表也一样。创建的是子类对象,则优先用子类的方法
直接通过子类对象访问成员变量:等号左边等于谁,优先用谁,没有则往上找;
直接通成员方法访问成员变量:该方法属于谁,就优先用谁,没有往上找
方法重写注意:1.子类方法的返回值必须小于等于父亲方法的返回值范围
2.子类方法的权限必须大于等于父亲方法的权限修饰符:public>protect>default>private
继承关系中,父子类构造方法的访问特点:
1.子类构造中有一个默认隐含的super() 调用,所以一定是先调用的父类构造方法,后台调用子类构造
2.子类构造可以通过super关键字调用父类重载构造
3.super父类构造调用,必须是子类构造方法的第一个语句、
super关键字用来访问父类内容,其作用有:
1.在子类的成员方法中,访问父类的成员变量/方法。
2.在子类的构造方法中,访问父类的构造方法。
this关键字用来访问本类内容的成员变量(方法);
在本类的构造方法中,访问本类的另一个构造方法。
注意:A.this(...)调用必须是构造方法的第一个语句,唯一一个。
Java中继承的相关注意问题:
1.一个类的直接父亲只能有唯一一个。
2.Java语言可以多级继承。
3.一个类的直接父亲是唯一的,但是一个父类可以拥有很多个子类。
抽象:
1.不能直接创建new抽象对象,一般作为父类使用;2.必须使用一个子类来继承抽象类;3.子类必须覆盖重写抽象父类中所有的抽象方法。
|
|