一:
数组的动态静态方法
Student[] stu = new Student[20];//动态分配20个Student类型的数组空间
Student[] stu1= new Student[]{1,2,3,4,5,6,7}//静态分配数组
//注意:[数组个数]与{1,2,3,4,5,6}不可同时既是静态又是动态
//动静不可结合,这里不是语文古诗的越丰富越好
java中实体的使用中,一定是先创建对象。
Student s1= new Student();//创建Student的实体类对象s1
s1.后面跟的是实体类的属性。
-
栈与堆
栈中存放的是局部变量,方法,在方法调用完之后栈中释放。栈中存放new 的对象的地址,并通过该地址找到堆中的具体实际对象空间。
堆中存放的是[非static]对象的属性,成员变量,new的对象的空间是在堆中完成。 -
匿名对象
new Person();
即为创建一个对象而不对它进行赋予名称,就是匿名。
匿名对象只能调用一次。
打个比方:房子 3602=new 房子();
这里是创建了一个新的房子对象,它的名字叫做3602.你可以根据3602找到。但是只是new 房子();使用一次之后,你没有任何途径恶可以将你之前使用过的对象找到。
匿名对象的使用用途
public class phone{
//属性
int year;//手机的发行年份
String name;//手机的型号
//方法
public void test(phone p1){
if(合格的条件判定){
syso("该产品合格");
}else{
syso("该产品不合格");
}
public static void main(String[] args){
//匿名对象进行测试
}//此测试代码不完整
测试类的项目new 一个类A的实体类a在A的类方法中定义一个此时方法test.(B b)。则此时方法可以是a.test(new B());
a.test(new B());//匿名对象的测试
- 自定义的工具类:
这里借鉴学习视频的教程代码:多试着自己动手尝试工具类的代码
import java.util.Scanner;
import java.util.*;
//自定义工具类
/**
* CMUtility工具类, 将不同的功能封装成方法,就是可以通过调用方法使用它的功能,而不需要考虑 具体功能的实现细节
*/
public class CMUtility {
private static Scanner scan = new Scanner(System.in);
/**
* 用于界面菜单选择,该方法读取键盘,如果用户键输入1-5的任意字符,则方法返回
*/
public static char readMenuSelection() {
char c;
for (;;) {
String str = readKeyBoard(1, false);
c = str.charAt(0);
if (c != '1' && c != '2' && c != '3' && c != '4' && c != '5') {
System.out.println("选择错误,请重新输入:");
} else
break;
}
return c;
}
// 获取性别的方法
public static char readChar() {
String str = readKeyBoard(1, false);
return str.charAt(0);
}
// 获取性别方法的重载
public static char readChar(char defaultValue) {
String str = readKeyBoard(1, true);
return (str.length() == 0) ? defaultValue : str.charAt(0);
}
//获取年龄
public static int readInt() {
int n;
for (;;) {
String str = readKeyBoard(2, false);
try {
n = Integer.parseInt(str);
break;
} catch (NumberFormatException e) {
System.out.println("数字输入错误,请重新输入:");
}
}
return n;
}
//进行年龄修改使用的重载方法
public static int readInt(int defaultValue) {
int n;
for (;;) {
String str = readKeyBoard(2, true);
if (str.equals("")) {
return defaultValue;
}
try {
n = Integer.parseInt(str);
break;
} catch (NumberFormatException e) {
System.out.println("数字输入错误,请重新输入:");
}
}
return n;
}
//基本类中的获取方法 通过工具类 实现
public static String readString(int limit) {
return readKeyBoard(limit, false);
}
//修改
public static String readString(int limit, String defaultValue) {
String str = readKeyBoard(limit, true);
return str.equals("") ? defaultValue : str;
}
// 用于确认输入的方式
public static char readConfirmSelection() {
char c;
for (;;) {
String str = readKeyBoard(1, false).toUpperCase();
c = str.charAt(0);
if (c == 'Y' || c == 'N') {
break;
} else {
System.out.println("选择错误,请重新输入");
}
}
return c;
}
// 私有的静态方法
private static String readKeyBoard(int limit, boolean blankReturn) {
String line = "";
while (scan.hasNextLine()) {
line = scan.nextLine();
if (line.length() == 0) {
if (blankReturn)
return line;
else
continue;
}
if (line.length() < 1 || line.length() > limit) {
System.out.println("输入的长度有误不符合范围,请重新输入");
continue;
}
break;
}
return line;
}
// source + format整理代码格式
}
二
- 重载
重载:与返回值类型无关,只看参数个数与类型的。
sort(int a);
sort(double b);
- 可变形参个数:
public void show(String... strs){
}
传入个数可以是多个。注意:可变个数形参,在方法形参中必须声明在末尾,并且最多只能声明一个。
应用场景:sql语句用户查询个数未知的情况下进行选择。
strs:形参可以看做是传递数组的首地址,可以使用for循环进行相关的查询结果的输出。
实例:
public class Test {
public void show(String... strs){
for(int i=0;i<strs.length;i++){
System.out.print(strs[i]+"\t");
}
}
public static void main(String[] args) {
Test t1 =new Test();
t1.show("wo","shi","yi ","ge","dsb");
}
}
测试结果
wo shi yi ge dsb
3 终止程序;System.exit(0);
三:面向对象
-
封装性与隐藏性
封装性:类的成员变量类型设置为private;通过getset方法的调用来进行获取。
private<default<protected<public
不能直接.属性进行修改,而是通过接口方法的调用。
封装性体现在:{私有化属性;对内使用私有化方法;单例模式}
JAVA有以上4种权限,但是类只有两种:public private. -
异常信息处理
throw new RuntimeExcrption("信息输入错误");
- 类的成员变量(3/5):属性,方法,构造器
构造器:本身系统默认提供,default无参数据类型 - this关键字的使用
当类中方法的形参和类的属性相冲突的时候,用this关键字来表明当前对象本身。
this:可以适用于属性,方法,和构造器。
在构造器中,不能形成闭环的状态,n个构造器最多调用n-1个,声明在首行的位置;this.();并且仅仅是调用一次。 - 快捷键的使用熟悉操作:
alt+shift+s //构造器以及get,set方法和format代码排版
alt+up/down //整个代码块的上或者是下的移动
shift+回车键 //直接下一行
shift +回车键 + ctrl //直接上一行定位
home/and //行头行尾
import static 导入静态结构
import static.java.lang.Math*;//random()方法直接使用
import static.java.lang.System*;//out.println()方法直接使用
8.单例模式
构造器私有化
类与构造器的声明权限一致:public,default