赞
踩
win7 192.168.218.171
win10 192.168.218.204
内网通文件目录:C:\Users\Public\Nwt\cache\recv
Eclipse:C:\Users\Administrator\workspace
因为下载Notepad++而出来的垃圾安装包:C:\Users\Administrator\AppData\Local\Temp\gzss
环境变量 下面(系统变量)新建名字:JAVA_HOME变量值为jdk安装位置
新建名CLASSPATH变量值为:.
打开path在变量名最后加:;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
第一个Java:Hello
先编译javac后解释java的语言(Java)
整形(bype:1字符,short:2字符,int:4字符,long:8字符),浮点型,字符型(char:2字符),布尔型(boolean:true false)
引用数据类型:类(字符串),接口,枚举,数组
自动转换(没有缺点)
强制转换(有缺点 如long转成int会产生精度损失)
要求:
1: 熟记JDK,JRE,JVM之间的关系
2: 熟记Java的数据类型,并能全部手写出来
3: 熟记变量的使用
4: 数据数据类型之间的转换,明白什么是自动转换,什么是强制转换
1.final修饰的变量是常量,值不可以改变 final int m;
2.%取余
3.i += 50 为 i = i + 50
4.byte b = 5;
b = b + 5会报错 因为5是int类型
5.
i=5
if(i++)判断时先使用i(判断i)后自增
if(++i)判断时先自增后使用(判断i)i
6.字符串链接符 +
7.
常量池中的数据只有一份
可用new来开辟堆中的空间
8.str.equals(str1)判断字符是否相等,字符判断不可用==
9.逻辑运算符 &&(短路与)与&(位与) A&&B A为false时B不执行
A&B不管A为什么B也会执行 ||与|同理
Integer.parseInt();string型字符串转换为int
尽量不要使用while(true){}
Switch()可以使用嵌套
Switch()case里面如果没有break程序会继续向下面进行直至遇见break或者结束。
需要用到if()时简单的都可以用三目运算符替代A条件D?C:B;
Math.random()* n 生成0到n的数字(为小数)
Arrays:是JRE提供给我们的一个工具类,专门用于操作数组的,里面提供了很多与数组有关的方法。
* Arrays.toString(array): 可以将数组转化成字符串。
* Arrays.sort(array); 可以将数组的元素进行升序排序。
* Arrays.binarySearch(array, 487); 返回元素在数组中的下标位置,如果是负数代表不存在,二分查找,需要有序。
* Arrays.fill(array,555); 将数组内的元素都变成555
* Arrays.copyOf(array, 10); 复制一个新的数组,长度为10,并且在有效长度之内新数组的值与老数组相同
* Arrays.copyOfRange(array, 2, 10);从下标2开始拷贝,到下标10截止,将内容复制到新数组中,长度不够用默认值补。
* Arrays.equals(copyOfRange, copyOfRange2) 对比数组中的值是否相等。
昨日内容回顾:
1: while循环以及do while的区别,以及使用
2: 数组的动态实例化以及静态实例化,数组的使用
3: Arrays工具类的使用
4:冒泡排序以及选择排序
今天内容:
今天早上我去吃饭,我遇到一个人请问我遇到的是谁?如果这样去问,大家肯定不知道我遇到了谁,
因为人这个概念太模糊了,如果我说今天早上我去吃饭我遇到了关思思,大家知道我遇到谁了么?
此时人这个概念被具体化成了关思思,这样大家都知道我遇到的是谁了。
人:
属性:性别,年龄,身高,体重
行为:吃饭,睡觉,说话
如果只是说人的话,那么人虽然有所有的属性以及行为,但是这些属性基本上都没有具体的值。
关思思:
属性:女,18,158,80
行为:吃饭,睡觉,说话
但是如果我们根据人的这个模板生成了一个具体的对象,就可以给这个对象赋值了。
猫:年龄,颜色,品种,名字
tom:81, 蓝色,短毛猫,汤姆
类:是一个非常抽象的概念,我们没有办法指着类去说它具体是指谁,因为类指向的是一个大体,类
里面抽离了所有实例对象的共有特征形成了属性,而在类中这些属性是没有具体值的,因为这些属性
虽然写在类中,但是属性具体的值却属于通过类实例化出来的对象。
对象:通过类创建出来的实例(对象就是类的实例化体现),类是比较抽象的概念,而对象却是一个具体的
概念,每个对象都有自己的属性,与其他对象无关。
我们可以简单理解成:
类是一个设计图纸,这个设计图纸上虽然标注的有形状,样子,等很多属性,但是在图纸上并不是真实存在
的,如果我们通过设计图作出了真正的产品,那么产品的值就是真实存在在的。
一:类主要是由属性(变量),方法,代码块组成。
变量的划分:
1:直接声明在类中,其作用域是整个类。
2:全局变量是由默认初始值的(不需要初始化也可以直接使用)。
全局变量有两种
1:被static修饰的变量,存储在常量池之中,被所有对象共享,并且可以直接通过类名调用。
2:没有static修饰的变量,存储在堆内存中,每个对象都有自己的一份,不会共享,只能通过
对象名.调用。
1: 一般声明在方法之内,作用域一般都是声明时候的作用域,例如如果直接声明在方法中,作用域
就是整个方法,如果声明在方法体中的for循环作用域里,变量的作用域就只是这个for循环。
2: 局部变量没有默认初始值,这就是说局部变量必须初始化之后才能使用。
什么时候使用static修饰变量?
1:由于static修饰的变量在内存中只有一份,只要有任何一个对象修改了就都会被修改,所以我们
一般会在static变量前面加上final,让其禁止修改。
2:只有在工具类中,定义某些方便使用,但是又不需要被改变值的变量,才会使用staticfinal定义,
例如Math类中的PI常量等。
1:实际上方法就是指,将一些功能性代码封装起来,方便以后反复使用。
2:我们的所有代码都在一起,看起来会非常凌乱,如果我们将每段代码都封装成一个方法,这样代码
看起来就会方便很多。
例子: 如果没有方法的话,每次我们使用冒泡排序都需要写一堆排序的代码,用10次要写10次,非常
麻烦,但是如果我们将排序的代码封装成一个方法,那么以后当我们需要排序的时候直接调用方法
就可以了,不需要在重复写排序的代码了。
方法的语法: [] 代表可选
[访问修饰符] [static] 返回值类型 方法名([形参列表…]){
方法体
}
主要用来控制方法可以被哪些类访问到。
1:public 公交车,谁都能乘坐。 代表本项目中所有的类都能使用这个方法。
2:protected校车,只有校内能乘坐。 代表本包下所有类,以及其他包下的子类对象能使用这个方法。
3:无 专线车 代表本包下所有类都能使用这个方法。
4:private 私家车 代表只有本类中能访问到这个方法。
决定的是,当方法执行完成后返回给调用者什么类型的数据。
1:当我们写方法的时候,想返回给调用者什么数据,就写什么类型即可。
题目:
(1)写一个方法,最后返回长度为4的字母+数字组合的随机验证码。 答:返回值应该是String。
(2)写一个方法,最后返回两个数的乘积。 答:返回值应该是int 或double。
(3)写一个方法,用来返回类中所有属性拼接的信息。 答:返回值应该是String。
(4)写一个方法,这个方法最后会返回一个Dog类对象 答:返回值应该是Dog。
2:如果方法有返回值的话,在方法的最后需要使用return关键字,将数据返回给调用者。
题目:
(1) String str=“随机生成的验证码”;
return str;
(2) int j=ab;
return j; 或者 return ab;
(3) return “Dog[age=]”+age+",name="+name;
(4) Dog d = new Dog();
return d;
3:如果方法执行之后,不需要返回调用者数据,使用void关键字来表示这个方法没有返回值。
4:如果方法使用了void关键字,就可以不需要return数据了。
5:有返回值的方法,执行完成后会变成对应的数据,我们可以将其放在输出语句之中,或者使用
变量接收方法的返回值。
标识符之一,自定义的根据命名规则其即可。
四:形参列表 调用方法的时候,需要方法的调用者传递给我们什么值,就写什么。
方法中有时候需要使用一些数据,而这些数据需要方法的调用者传递给我们,此时我们就可以将
这些数据定义在形参列表中。
例如:计算A 与B 的乘积,那么A和B肯定要由方法的调用者传递给我们,我们才能计算,此时就可以
在形参列表上定义A 和B两个变量。
例如:给int数组排序,那么int数组肯定是由方法的调用者传递给我们,我们才能排序,此时我们
形参需要定义一个int数组。
方法想实现什么功能,就写什么代码。
1:被static修饰的方法,叫静态方法,可以使用类名直接调用,同时也可以被对象调用。
2:被static修饰的方法,无法直接访问实例成员的属性(无static修饰的属性)以及实例方法。
3:没有static的方法,叫实例方法,只能使用对象调用。
4:实例方法可以访问所有的变量以及方法。
构造方法(构造器): 构造方法是专门为了创建对象而存在的。
1: 构造方法没有返回值类型的说法,因为他就是为了创建对象而存在。
2: 因为构造方法必须创建自身类的对象,所以要求构造方法的名称必须与类名一致。
3: 如果类中没有写构造方法的话,会自动生成一个默认的无参构造方法。
4: 构造方法可以重载。
问:构造方法主要的用处是?
答: 主要的用处就是用来给刚创建出来的对象属性进行赋值。
this:当前使用的对象,代码执行到哪个对象的时候,this就代表谁。
1:使用this.属性,可以调用当前对象的属性。
2:使用this.方法(),可以调用当前对象的方法。
3:使用this() 是调用自身的构造方法,需要注意,调用自身的构造方法只能在构造方法中调用。
4:静态方法中没有this,只有实例方法中以及构造方法中才有this的存在。
问:什么情况下使用this
答:当我们方法中的局部变量名与全局变量名冲突的时候,如果想使用全局变量需要使用this关键字。
1: 个人笔记。
2: 代码三遍。
3: 定义工具类MyArrays实现方法如下
3.1: 可以对所有类型的数组进行升序排序
3.2: 可以对所有类型的数组进行降序排序
3.3: 可以将所有类型的数组的数据转化成字符串然后返回
3.4: 可以从所有类型的数组中查询元素是否存在,如果存在返回下标,不存在返回-1
面向对象的三大特征:
1: 将一组对象的共有属性以及行为抽象成一个类。
2: 将属性私有化,提供公开的方法来访问属性,方法的要求是:
2.1 赋值的方法名要set开头后面跟上属性的名字以name举例:setName
由于要给属性赋值,所以赋值的方法肯定是有参的,无返回值。
2.2 取值的方法名要get开头后面跟上属性的名字以name举例:getName
由于要取出属性的值,所以取值的方法肯定是有返回值的,并且无参。
3: 将一组功能性代码,封装成方法方便以后反复调用。
是指孩子从父辈或者爷爷等祖辈继承下来的一些家产,也就是指孩子可以使用父辈的一些东西,现实中一般人只能继承自己亲生父辈的家产,而现实中每个人都只有一个亲生的父母,也就是
说一般情况下每个人只能继承1次。
Java中的继承是指,子类可以使用extends关键字去指定自己的父类,然后继承父类的非私有属性以及方法。
1: 每个人只有一个爹,所以Java只支持单继承,也就是说我们的类只能继承一个类。
2: 但是每个爹都可能会有很多个孩子,所以每个类都可以被继承多次。
3: 现实中每个人肯定都有父亲,在Java的类中每个类也都有父类,如果我们的类没有指定父类,默认会继承于Object,所以Object类是所有类的超类(基类)。
4: 子类可以从父类继承方法,如果子类对父类的方法功能不满意,可以选择重写父类的方法,如果子类重写了父类的方法,在调用方法的时候会先调用子类的方法实现。
5: 构造方法不能被继承。
6: **在创建子类对象的时候,JVM会调用父类的无参构造创建父类的实例化对象,然后在去实例化子类对象。**
7: 如果父类没有无参构造,我们需要在子类的构造方法中使用super来显示的调用父类的构造方法。
super() 表示调用父类的构造方法
super.属性 表示调用父类的属性
super.方法() 表示调用父类的方法
1: 重写是发生在父子类关系之中的,方法名称需要与父类方法名一致。
2: 形参列表需要与父类一致。
3: 返回值类型需要与父类一致。
4:要求子类的访问修饰符不能比父类更严格。
当我们将对象放入到输出语句的时候,默认会自动调用toString方法,那么我们只要重写toString方法,让toString方法返回对象信息的字符串,就可以实现输出对象的时候直接输出对象
的所有信息。
1:修饰在变量上,让其变成常量。
2:修饰在类上,final修饰的类不能被继承,String就是被final修饰的所以不能被继承。
3:修饰在方法上,final修饰的方法不能被子类重写。
1: static修饰在变量上,变量会变成静态成员,可以被类直接调用。
2: static修饰在方法上,方法会变成静态方法,可以被类直接调用。
3: static修饰在类上,叫做静态类
4: static修饰在代码块,叫做静态块。
1:静态块 直接写在类中,被static修饰的代码块,只有在类第一次被加载的时候会执行一次。
2:构造块 直接写在类中,无任何修饰的代码块,每次创建对象的时候都会执行一次。
3:普通块 写在方法之中,可以避免方法中的变量名冲突,但是同时也局限了变量的作用域。
4:同步块------预留后期多线程时候将
静态块–优先所有–>构造块—优先自身—>构造方法
见day11
接口中的常量默认被public static final修饰
接口中的实例方法必须被default修饰,default前面默认存在public,并且只能为public。
接口中的静态方法必须是public修饰符
接口中的抽象方法默认被public abstract修饰
/** * @author Administrator * interface:用来表示这是一个接口 * class :用来标识这是个类。 * 接口和类的区别: * 1.接口中只能有常量,而抽象类中可以有成员变量。并且接口中的常量默认被public static final修饰,而抽象类中可以有成员变量。 * 2.接口中的实例方法必须被default修饰,default前面默认存在public,并且只能为public。而抽象类中实例方法随意。 * 3.接口中的静态方法必须是public修饰符,而抽象类随意 * 4.接口中没有构造器,而抽象类中有 * 5.接口中没有静态块和构造块,而抽象类中全有 * 6.接口中的抽象方法默认被public abstract修饰, * 7.接口是被类用来实现的(普通类实现接口,必须添加所有的抽象方法实现),而抽象类是被用来继承的 * 8.一个类可以同时实现多个接口,而抽象类只能单继承 * 9.接口可以多继承接口,而抽象类只能单继承 *总结: * *作用: *1.主要用来充当方法的目录,统一所有实现类中方法的规范 *2.在以后的项目中,我们可能会使用很多常量值,如果常量值的定义到处都是的时候很麻烦,此时可以将所有的常量都保存在接口中 */
就是指多个形态。
1:多态是指声明的是父类(包括接口)的类型,但是实例化的却是子类(实现类)的对象。
2:继承或实现+方法的重写是多态的前提条件。
多态的好处:
1:可替换性(Anmial a ;
a= new Pig(); //声明接口类型,实例化实现类的对象。
a= new Cow();
a= new Mouse()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。