基础知识点 :
所有new出来的东西和数组都在堆当中(先进先出),栈中存放基本数据类型和堆中对象的引用(先进后出)。
1.数据类型转换 从小到大是自动转换
2.数据类型从大到小 需要进行强制类型转换
格式:范围小的类型 范围小的变量名 = (范围小类型) 原本范围大的数据;int
例; int num = (int) 100L;
3.强制类型转换不建议使用!!会发生精度损失。数据溢出。
4.脚本 ----> jshell <----- 的使用 可以直接在cmd 命令行中使用 可以直接运行某些代码
退出 默认 \exit
1.方法重载 over load
多个方法名称一样,但参数列表不一样,类型也可以不同,与名称无关,与返回值类型无关;
只与方法名和参数列表有关(数量)!!
1、java中【数组】的定义方式
//静态数组初始化
int[] a = new int[]{2, 3, 3, 4, 45, 56, 67, 4, 4, 4,};
int[] array1 = {3, 3, 4, 5, 5, 6, 6, 6, 6, 6,};
int[] array2;
array2=new int[]{34,23,23,34,};
//动态数组初始化
int[] array3; or int[] array03=new int[5];
array3=new int[5];
String[] array = new String[10];
//将一个数组1名给另外一个数组2,数组2进行修改数组1也会改变
相当与把数组1 的地址给数组2
eg;int[] array2=array1;
//未赋值时数组元素默认值;
整形类型,默认为0;
浮点型, 默认为0.0;
字符型, 默认为'\u0000';
布尔类型 默认为false;
引用类型 默认为null;
//将数组名作为函数的参数
public siatic void print(int[] array){ 方法 };
//使用方法返回值返回数组
直接将方法名给数组 ;
int[] array=arrayReturn;
arrayReturn方法返回数组名;
2、private关键字的使用
用person关键字进行修饰,在本类中仍然可以随意访问。 但是一旦超出本类范围不能直接访问了
进行修饰,在本类中仍然可以随意访问。 --可以提高代码的安全性----
//person.age=-20;不能直接访问!!!!
person.setAge(20);//需要间接的访问set+首字母大写成员变量 设置数据;
3、this 的使用
当方法的局部变量和成员变量重名时,根据【就近原则】。【优先使用局部变量】;
this.成员变量名
通过谁调用的方法,谁就是 this
public class Person {
String name;//我自己的名字
//参数name是对方的名字
//成员name是我自己的名字
public void sayHello(String name) {
System.out.println(name + "你好,我是" + this.name);//成员变量前写this
}
}
4、构--造--方--法
构造方法是专门用来创建对象的方法,new 对象时,就是在调用构造方法。
public 类名称(参数类型 参数名称){
方法体
}------构造方法的名称必须和所在的类的名称完全一样,就连大小写都一样;-----------构造方法不要写返回值类型,连void都不写;--------
构造方法不能写return 一个具体的返回值;
如果没有编写任何构造方法,那么编译器默认赠送一个构造方法,没有参数·方法体 什么都没有都不做;
public Student(){}
一旦编写了至少一个构造方法,编译器将不再赠送
构造方法也可以重载的
5、标准的类(Java Bean)
一个标准的类通常有四个部分组成;
- 1;所有的成员变量都要使用private关键字修饰
- 2;为每个成员变量编写一对Get/Set方法;
- 3;编写一个无参的构造方法;
- 4;编写一个有参的构造方法;
- ---------自动补全Get/Set 和构造方法------------
- coin--generate 或者快捷键 ALT+insert;
- --------- 一个标准的类也叫Java Bean-------------
public class Student { //一个标准的学生类 private String name;//姓名
private int age;//年龄
public Student() {//无参构造方法
}
public Student(String name, int age) {//全参构造方法
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
6、Scanner(键盘输入)
public class DemoScanner {
public static void main(String[] args) {
//2,创建
Scanner sc = new Scanner(System.in);//从键盘输入;System.in
//3.获取键盘输入的int数字
int num = sc.nextInt();
System.out.println("输入的int数字是=" + num);
//获得字符串输入的字符串
String str = sc.next();
System.out.println("输入的String字符串是" + str);
//获得浮点型数据;
float at = sc.nextFloat();
System.out.println("输入的浮点型是" + at);
}
}
7、匿名对象
匿名对像就是只有右边的对象 ,没有左边的名字和赋值运算符;
new 类名称();
注意事项:
- 匿名对象只能使用唯一的一次,下次在用不得不再创建一个新对象;
- 使用建议:如果确定一个对象【只需要使用唯一的一次】,就可以用匿名对象;
public class DemoArraymous01 {
public static void main(String[] args) {
//=========普通使用方式
//Scanner sc =new Scanner(System.in);
//int num =sc.nextInt();
//=========匿名对象使用方式
//int num = new Scanner(System.in).nextInt();
//System.out.println("输入的数是" + num);
//=========使用一般写法传入参数;
//Scanner sc =new Scanner(System.in);
//methodParam(sc);
//==========使用匿名对象方式传入参数
//methodParam(new Scanner(System.in));
Scanner sc = methodReturn(); // 返回值为 new Scanner(System.in)
int num = sc.nextInt();
int num1=methodReturn().nextInt();// 匿名方法
System.out.println("输入的为" + num);
System.out.println("输入的为" +num1);
}
public static void methodParam(Scanner sc) {
int num = sc.nextInt();
System.out.println("输入的是" + num);
}
public static Scanner methodReturn() {
//常规写法
//Scanner sc =new Scanner(System.in);
//return sc
//匿名对象做返回值
return new Scanner(System.in);
}
8、Random(生成随机数)
2,创建
Random r =new Random();//小括号当中留空即可
3、使用
获取一个随机的int数字(范围为int所以范围;有正负):
int num=r.nextInt()
获取一个随机的int数字(参数代表范围 左闭右开):
int num=r.nextInt(3) 代表的含义为【0,3);0```2;
public class DemoRandom {
public static void main(String[] args) {
Random r = new Random();
int num = r.nextInt(10); // 10以内的随机数 ,不包含10;
System.out.println("随机数"+num);
}
}
9、对象数组
定义一个数组,用来存储3个Person对象;
Person[] array =new Person[3]; Person类型的数组对象
数组缺点:一旦创建,程序运行期间长度不可以发生改变;
//Person 是一个标准的类(Java Bean)
//创建一个长度为3的数组,里面存放Person类型对象
Person[] array = new Person[3];
Person one = new Person("奥丁", 200);// new 三个对象
Person two = new Person("索尔", 150);
Person three = new Person("海拉", 200);
//将one中的地址值赋值到数组的0号元素;
array[0] = one;
array[1] = two;
array[2] = three;
//使用
System.out.println(array[0].getName()+array[0].getAge());
10、ArrayList的相关
数组长度不可以发生改变;
arrayList 的长度可以随意改变;
对于ArrayList来说;有一个尖括号代表泛型
泛型:也就是装在集合当中的所有元素全都是同一的什么类型
*注意 :泛型只能是引用类型,不能是基本类型;
注意事项;
- 对于Arrayist集合来说,直接打印得到的不是的地址值,而是内容
- 如果内容为空 ,得到的是空中括号[];
基本类型 包装类 (引用类型,包装类都位于java.lang包下)byte Byteshort Shortint 【Integer】 !!!特殊long Longfloat Floatdouble Doublechar 【Character】 !!!!特殊boolean Boolean
*从JDK 1.5+开始,支持自动装箱、自动拆箱;
自动装箱 : 基本类型---->包装类型
自动拆箱 : 包装类型---->基本类型
常用方法
【add】向集合当中【添加元素】,参数的类型和泛型一致 #返回值为boolean类型代表添加是否成功:
备注:对于add来说添加动作一定成功;所以返回值可用可不用;多余其他集合来说,add添加动作不一定成功;
【get】从集合中【获取元素】,参数是索引编号,返回值就是对应位置的元素;
【remove】从集合中【删除元素】,参数是索引编号,【返回值就是被删除掉的元素】;
【size】 获取集合中的【尺寸长度】,返回值是集合中包含的元素个数;
ArrayList<String> list = new ArrayList<>();
System.out.println(list);
//向集合中添加元素;add
boolean success = list.add("奥丁");//返回值
System.out.println(list);
System.out.println("添加的动作是否成功:" + success);
list.add("索尔");
list.add("海拉");
list.add("钢铁侠");
list.add("绿巨人");
System.out.println(list);
//从集合开始获取元素:get(); 索引值从0开始;
String name = list.get(2);
System.out.println(name);
//从集合删除元素: remove() ;索引值从0开始;
String whoRemove = list.remove(3);
System.out.println("被删除的人是"+whoRemove);
System.out.println(list);
//获取集合的长度;size();
int size=list.size();
System.out.println("集合的长度是:"+size);
【案例】 使用学生标准类作为集合泛型
//Student 为一个标准的学生类
Scanner sc = new Scanner(System.in);
ArrayList<Student> list = new ArrayList<>();
//尖括号中的泛型为学生 ,所以 泛型为Student 为一个类包含name age
for (int i = 0; i < 4; i++) {
System.out.print("请输入姓名:");
String name = sc.next();
System.out.print("请输入年龄:");
int num = sc.nextInt();
list.add(new Student(name, num));//通过匿名对象,将对象中name age存入集合中;
}
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
System.out.println("姓名:" + stu.getName() + " " + "年龄:" + stu.getAge());
}
返回值类型为集合
public static void main(String[] args) {
Random r = new Random();
ArrayList<Integer> bigList = new ArrayList<>();
for (int i = 0; i < 20; i++) {
int num = r.nextInt(100) + 1;//范围
bigList.add(num);
}
ArrayList<Integer> smollList = getSmallList(bigList);//创建一个小集合存储返回的小集合;
System.out.println("集合中的偶数为:" + smollList.size());
for (int i = 0; i < smollList.size(); i++) {
System.out.print(" " + smollList.get(i));
}
}
-------------------------------------------------------------------------------
//这个方法接受大集合参数,返回小集合结果; !!!集合可以当作方法的参数,也可以当作方法返回值!!!
public static ArrayList<Integer> getSmallList(ArrayList<Integer> bigList) {
ArrayList<Integer> smallList = new ArrayList<>();
for (int i = 0; i < 20; i++) {
int num = bigList.get(i);
if (num % 2 == 0) {
smallList.add(num);
}
}
return smallList;//返回小集合
}