无题
程序设计追求“高内聚,低耦合”,高内聚---就是类的内部数据操作细节自己完成,不允许外部干涉;
低耦合---仅暴露少量的方法给外部使用。
属性+方法=类
以类的方式组织代码,以对象的组织数据.
类与对象:类是一个模板,对象是一个具体的实例。
对象是通过引用来操作的:栈---->堆
方法的重载主要看方法名和参数列表
break: 跳出switch,结束循环 return: 结束方法
continue是跳过当次循环中剩下的语句,执行下一次循环
实例化一个类
对象类型 对象名 = 对象值;
字符串拼接时 符号位要用String.valueOf('符号位')
已知循环次数用for,先执行在判断do-while,否则用while.
创建数组和初始化必须在一行代码中完成.
变量的作用域是以"{}"为单位的.
where 碰到一个功能反复出现 ,要用方法.
eclipse快捷键
ctrl+shift+X:小写转换为大写; ctrl+shift+y:大写转化为小写
(神键)ctrl+1:接收并赋值给某变量。 ctrl+shift+f:代码规范
alt+shift+M-->生成方法
idea快捷键
ctrl+H:生成继承树 iter:生成foreach shift+f6:更改类名,代码中与类名一样的也会改
alt+shift+z:try-catch ctrl+p:查看数据类型
了解什么最快的方法--百度百科。
给类和方法加文档注释。
switch后面数据类型可以是byte,short,int,char,String,枚举。
equals左边写常量。
String.valueOf()基本类型-String
弹出输入框----String num = JOptionpane.showInputDialog("请输入一个整数");
String->int------int intNum = Integer.parseInt(num);
运算符优先级 :()、*/%、+ -、关系、逻辑、赋值。
Math.pow(n,3)------n^3 Math.sqrt(n)--------n的平方根 Math.sbs(n)---|n|
Math类两个常量 PI和E
debug f5:进入被掉方法 f6:单步执行(每次执行一行)
f7:执行完当前方法并退出 f8: 将程序执行over(如果有断点,执行到断点所在行)
任意一个类都直接或者间接继承Object
A extends B : A继承于B A:子类 B:父类
父类有这样的方法,子类也有这样的方法,这一现象叫方法(方法定义必须一样); 子类自动拥有父类的属性和方法。
定义了一个类,一旦重写toSting的话,意味着,有一个好处;就是"直接打印对象"
属性:成员变量;每一种成员变量都有一个默认值。
boolean默认值是false
引用变量之间赋值,赋的是地址。.
类是图纸是模板,对象才是具体的事物。
Car car = new Car();-----car-引用变量,new Car()-对象。
toString--以文本形式显示对象信息。
if(一){二} 二里面不知道写啥可以加个标志位!
数字别用引号括起来。
if(){}记得大括号
索引:从0开始的正整数。
数组的初始化:就是开辟空间。
Java.lang.NullPointerException 空指针异常,访问了空常量的数据(对空常量操作/调用)
java.lang.ArrayIndexOutOfBoundsException数组索引越界异常:访问了数组中不存在的索引处元素(访问的索引>=长度)
打印二维数组Arrays.deepToString(arr)
二维数组中的元素(一维数组):当前的一维数组无法初始化,所以该一维数组就是引用数据类型的默认值null.
方法是对一段代码串的封装
打印一个字符数组,打印的是该数组中的元素序列。
方法调用会压栈, 执行完后会弹栈。
当形式参数是基本数据类型:实际参数与形式参数是值传递,与变量名无关,方法内部对数据的改变不会影响原数据--方法的调用是值传递。
当形式参数是引用数据类型:实际参数与形式参数是地址值传递,方法内部对数据的改变,会影响原来的数据。
跨类调用要创建对象。
成员方法用对象调用。
current_time 当前的时间
- private(私有)是封装的一种体现形式,不能说封装就是私有;
- 封装还体现在:方法是对一段功能代码块的封装;类是对成员(成员变量和成员方法)的封装。
标准的javabean类:
- 私有了成员变量
- 提供了成员变量的公共访问方式(setXxx,getXxx)
- 可以更多的成员方法
构造代码块 (初始化块)
- 在类中方法外出现;多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行
- 静态代码块
- 在类中方法外出现,并加上static修饰;用于给类进行初始化,在加载的时候就执行,并且只执行一次。
- 一般用于加载驱动
this关键字的使用:
-
可以调用成员变量,this.成员变量名:如果子类中有该成员变量,就近原则
如果子类中没有该成员变量,就使用父类中,如果都没有则编译报错。
-
可以调用成员方法 this.方法名(....);如果子类中有该成员变量,就近原则
如果子类中没有该成员变量,就使用父类中,如果都没有则编译报错。
-
可以调用方法this(...):只能在构造方法种使用,必须放在第一行;只能访问自己的构造方法。
super关键字的使用:
- 可以调用父类的成员变量
构造方法作用---初始化成员变量。
子类中所有构造方法都会默认访问父类中空参数的构造方法
结论:子类初始化时,需要先初始化父类
原因-----1. 子类继承了父类,就有可能使用父类中的数据;如果父类没有对该数据初始化,子类就无法访问。
如果父类中的无参构造被私有了,子类如何完成对父类的初始化?
答案:子类初始化时,需要先初始化父类;父类中的无参构造被私有了,子类就需要通过调用父类中的有参构造完成对父类的初始化;如果父类中没有有参构造或者所有的有参构造都被私有了,编译报错。
new 的本质 1.是在调用构造方法(构造器) 2.初始化对象的值
注意点: 1.定义了有参构造之后,如果想使用无参构造,显示的定义一个无参构造。
栈里面存放一些方法和一些变量的引用
堆里面存放具体创建出来的对象,方法区。
静态方法不是重写关系,是覆盖关系;静态方法属于类,不能被子类继承。
instanceof 关键字--(x instanceof y)--x指向y的子类
- 父类引用指向子类对象
- 把子类转换为父类,向上转型---//子转父,父转子 私有方法会丢失
- 把父类转换为子类,向下转型:强制转换
- 方便方法调用,减少重复的代码
面向对象的三大特征封装继承多态---特征都是为了抽象
抽象类的所有方法,继承了它的子类,都必须重写它的方法...除非
抽象类存在构造器吗?--存在
抽象类存在的意义?--
fianl赋值位置--声明中,构造方法中
接口中方法--jdk7以前只有抽象方法,后增加了静态和默认方法
一个方法的权限修饰符被刻意使用了protected
用对象访问静态可以打破静态只可以访问静态。
内部类的创建对象格式:
外部类.内部类 对象名 = new 外部类().new 内部类();
OutterClass.InnerClass oi = new OutterClass().new InnerClass();
静态内部类创建对象的格式:
OutterClass.InnerClass oi = new OutterClass.InnerClass();
匿名内部类:本质是一个匿名对象
匿名内部类的格式:
new 类名/接口名(){
重写方法体
}. 方法;
内部类每用一次都要写一次吗
外部类可以访问static内部类,但是static内部类不可以访问非static外部类。
String类的“==”比较的是地址,equals比较的是值。
将字符转换为数值---解码
将数值转化为字符---编码
如果方法要返回多个数据,就要考虑容器思想(数组);
解决循环打印----用变量接收(boolean)
常见的数据结构:数组、二叉树、链表、哈希表...
for(集合元素的类型 局部变量: 集合对象)-->内部是迭代器
静态方法内部调用非静态方法,先要实例化该类
hashmap查询快、treemap可以排序、linkedhashmap有序
switch里面可以是byte,short,char,int,String,枚举类对象
auto:自动
实每一个执行线程都有一片自己所属的栈内存空间
写一个下载类,里面写下载方法,自定义两个需要的变量(网址和下载路径),构造方法,重写run方法,方法体内调用下载方法,然后主函数内调用start;
new 一个Thread调用一次run方法
接口回调
外部类->平行类->静态内部类->局部内部类->匿名内部类->lambda表达式
lambda多个参数无法去括号
public class Study {
public static void main(String[] args) {
IStudy study = null;
study = i->System.out.println("第"+i+"天学java!");
study.study(19);
}
}
interface IStudy{
void study(int i);
}
打印当前时间
System.out.println(new SimpleDateFormat("HH:mm:ss").format(new Date()));
Thread.sleep(1000);//每隔一秒
封装时用到private关键字来保证数据对象只能被方法访问
真正被两个线程并发访问引起冲突的是账户
synchronized锁同步代码块
锁的东西取决于同时执行的对象(要改变的)
netsh wlan show profiles name = "Xiaomi_9917" key = clear
常量和静态变量在类被加载的时候,已经单独开辟了空间,可以通过class直接引用,不需要初始化类
javadoc -encoding utf-8 -charset utf-8 HelloWorld.java
processon思维导图
单例模式,需要构造器私有
this和super关键字
instanceof...如果匹配可以进行转换
要么继承类,要么实现接口
StrackOverFlow栈溢出和OutOfMerroy内存溢出
file类
为什么会自动拆箱和自动装箱
实例方法和类方法也分别称为非静态方法和静态方法

浙公网安备 33010602011771号