你的位置:首页 > Java教程

[Java教程]java学习笔记(菜鸟原创)


搭建Java开发环境
使用开发工具开发Myeclipse
基础核心:JAVASEEEME面向对象 API JVM.
JAVAEE是指java enterprise edition,java企业版,多用于企业级开发,包括web开发等等很多组建
JAVASE是指java standard edition,Java标准版,就是一般Java程序的开发就可以,可以看作是JAVAEE的子集

JVM(java virtual machine)源代码myprogram.Java--(编译器)二进制字节码myprogram.class--(解释器)myprogram
JDK:(JAVA开发工具包)
JRE:(JAVA运行时环境)JDK包括JRE,JRE包括JVM

Java开发环境搭建
第一步:安装JDK
第二部:配置环境变量 java-home 配置JDK安装路径  path(最前面前后路径用;隔开) 配置JDK命令文件bin路径 classpath(.表示当前路径,;表示路径隔开lib路径)配置类库文件lib的位置

使用记事本编写java程序
使用javac命令编译java源代码为二进制字节码文件.class,使用解释interpretor器解释.class文件。
javac编译器命令后要跟扩展名,java命令后不能跟扩展名.class

IDE是一套工具,集成开发环境,包括eclipse myeclipse netbean 等将程序开发环境和程序调试环境集合在一起。
使用eclipse进行程序的开发
1创建java项目,2创建程序包,3编写java缘程序 4运行Java程序
创建一个工程,包括源代码,图片,视频,脚本等东西。创建包是为了方便代码的管理。例如名字相同的可以放在不同的包中。包名一般命名为项目名的域名的反向,例如com.imooc
pubic 修饰符class关键字,helloworld 与源代码文件名字要一致
public static void是必须的都一样,main是程序的入口。
myeclipse是对eclipse的扩展,是一个十分优秀的用于开发java,javaee的eclipse插件集合

java语言对大小写敏感。System.out.println("welcome to imooc");

程序的移植,项目的导入和导出的操作。找到项目properties属性,有location可知道项目的存储位置,复制粘贴就导出了,然后导入是,窗口import--general--existing project--选择项目位置就倒入了进来。

常用的技巧:
1、多练,企业需要动手能力强的,嘴皮子再溜不能写也是扯淡,
2、多问,网站上论坛上去避免走弯路,拒绝钻牛角尖,节省时间,
3、多动手调试错误,会debug,复习和总结。
4、每写完一个小知识点就做一个总结,每周小总结,每月进行大总结,记笔记犯过的错误,博客,巩固学过的知识点,(技术型太强,知识点非常的多,所以需要总结巩固。)
学虽容易,学好不易,且学且珍惜。

java关键字try catch finally throw  throws true char false boolean int short long float double if else switch case break continue default  for private protected public implements extends interface super class static void main null new package byte validate class instanceof  synchronized(同步)import
另外java区分大小写,所以Void 就不是关键字。

标识符:就是用于给JAVA程序中变量、类、方法等命名的符号,其规则:
1.  标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含 @、%、空格等其它特殊字符,不能以数字开头。譬如:123name 就是不合法滴
 2.  标识符不能是 Java 关键字和保留字( Java 预留的关键字,以后的升级版本中有可能作为关键字),但可以包含关键字和保留字。如:不可以使用 void 作为标识符,但是 Myvoid 可以
 3.  标识符是严格区分大小写的。 所以涅,一定要分清楚 imooc 和 IMooc 是两个不同的标识符哦!
 4.  标识符的命名最好能反映出其作用,做到见名知意。
优秀攻城师的习惯:
1、变量名由多单词组成时,第一个单词的首字母小写,其后单词的首字母大写,俗称骆驼式命名法(也称驼峰命名法),如 myAge
2、变量命名时,尽量简短且能清楚的表达变量的作用,做到见名知意。如:定义变量名 stuName 保存“学生姓名”信息
PS: Java 变量名的长度没有限制,但 Java 语言是区分大小写的,所以 price 和 Price 是两个完全不同的变量哦!

Java 语言是一种强类型语言。通俗点说就是,在 Java 中存储的数据都是有类型的,而且必须在编译时就确定其类型。整型浮点型布尔型,类,接口,数组。int 4,char 2 boolean 1 float 4 double 8 强制转化时,数值上并未进行四舍五入,而是直接将小数位截断。自动转换时,int可以自动转为double,反之不可,因为double是八位,int是4位。3转为3.0。

常量,我们可以理解为是一种特殊的变量,它的值被设定后,在程序运行过程中不允许改变。语法:final 常量名 = 值;程序中使用常量可以提高代码的可维护性。伙计们注意啦:常量名一般使用大写字符。
我们可以通过 javadoc 命令从文档注释中提取内容,生成程序的 API 帮助文档。javadoc -d doc Demon03.java!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!文档注释!!!!!!!!!!!!!!
一定要注意哦!自增和自减运算符只能用于操作变量,不能直接用于操作数值或常量!例如 5++ 、 8-- 等写法都是错误滴!

PS:% 用来求余数,也称为”取模运算符“
1、  > 、 < 、 >= 、 <= 只支持左右两边操作数是数值类型
2、  == 、 != 两边的操作数既可以是数值类型,也可以是引用类型
比较运算符用于判断两个数据的大小,例如:大于、等于、不等于。比较的结果是一个布尔值( true 或 false )。
String sex = "女";
sex.equals("男");
import java.util.Arrays;
public int sort(int [] scores){
Arrays.sort(scores);
System.out.println(Array.toString(scores));
}

 重载如果同一个类中包含了两个或两个以上方法名相同、方法参数的个数、顺序或类型不同的方法,则称为方法的,也可称该方法被重载了。
判断方法重载的依据:
1、 必须是在同一个类中
2、 方法名相同
3、 方法参数的个数、顺序或类型不同
4、 与方法的修饰符或返回值没有关系

构造方法
1、使用new+构造方法创建一个新的对象
2、构造方法是定义在java类中的一个用来初始化对象的方法,其作用是用来创建和初始化一个对象,构造方法必须与类同名且没有返回值。
3、格式为,public 构造方法名(参数){内容}
4、当没有指定的构造方法时,系统会自动的调用默认的构造方法,并赋初值
5、当有指定的构造方法,无论是有参,无参的构造方法,都不会自动添加无参的构造方法。比如定义了一个有参构造方法,而调用了无参的构造方法,则行不通。
6、有参和无参构造方法就是方法的重载
7、避免有参构造方法传值不安全的问题。

静态变量static:同一类的多个对象共享同一个成员,static修饰的成员成为静态成员,或类成员,他属于整个类所有,而不是某个对象所有,即被类的所有对象所共享,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!静态成员可以使用类名直接访问,也可以使用对象名进行访问,鉴于其特殊性推荐使用类名访问。静态成员属于整个类,当系统第一次使用该类时,就会为其分配内存空间直到该类被卸载才会进行资源回收,可被修改哦哦/

静态方法可以直接调用同类中的静态成员,但不能直接调用非静态成员。如果希望在静态方法中调用非静态变量,可以通过创建类的对象。然后通过对象访问非静态变量。静态方法可以直接被类调用,非静态方法可以直接被对象调用。
public static void print(){
HelloWorld hello = new HelloWorld();
System.out.println("欢迎你"+hello.name+"|");
System.out.println("爱好"+hobby+“、”);
}
普通成员方法中,则可以直接访问同类的非静态变量和静态变量。静态方法中不能调用非静态方法,需要通过对象来访问非静态成员。
通过输出结果,我们可以看到,程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。由于静态初始化块只在类加载时执行一次,所以当再次创建对象 hello2 时并未执行静态初始化块.

面向对象三大特性,封装,继承,多态。
封装属性,setter\getter方法,对象调用setter\getter方法来赋值。

包的概念,,更好的管理java类,解决同名文件冲突(区分同名的两个类)
包的定义,package 包名,必须放在java源程序的第一行,包名间可以使用“.”号隔开,eg:com.imooc.MyClass,区分层次
系统中的包:
java.(功能).(类)
java.lang(类)包含java语言基础的类String Integer Double /Math.......
util包含java语言中各种工具类Scander,Date,Calendar
io包含输入输出相关功能的类 每多一个点功能更加的详细。
import com.java.util.MyClass.
包的规范是全小写字母拼写。可以加载某个包下的所有文件,也可以加载某个具体包下的所有文件。

答:什么是内部类呢内部类的主要作用如下:
1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类
2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据
3. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便

静态内部类是 static 修饰的内部类,这种内部类的特点是:
1、 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问
2、 如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员
3、 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();

方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和 static 修饰符。

继承,extends,继承子类方法的重写。
继承的初始化顺序:初始化父类再初始化子类,先执行初始化对象中的属性,再执行构造方法中的初始化。

final修饰的类不可以被继承,final 修饰的方法不可以被重写,final修饰的已经赋初值的属性不可以被更改包括在构造方法中。而没有被赋值的final属性可以在构造方法中被赋值。如果final修饰后的属性没有赋初值,那么系统会报错。
在方法中的局部变量被final修饰后也不可以被更改,也就称之为常量。

java中的super关键字:在对象的内部使用,可以代表父类对象,访问父类对象的属性就super.age,访问父类的方法,super.eat()。在子类的构造方法中隐式调用了父类的构造方法。
如果子类构造方法中没有显示调用父类构造方法,则隐式super()调用。
如果显示调用父类的构造方法,则放在子类构造方法的第一行。
如果在父类定义有参数的构造方法,在子类中第一行必须有super()方法,因为没有super会隐式调用默认构造方法,所以。。。。。


Object类
1、toString()方法,返回对象是哈希code码,(对象地址字符串)可以通过重写toString方法来显示对象的属性。
2、equals方法,比较的是对象的引用是否占用同一块内存地址。一般比较的是值是否相等,所以要重新equals方法。
Dog dog = new Dog(),是new 一个Dog类的构造方法创建一个对象,将对象付给dog,其实dog不是我们创建的对象,他是我们对象的地址,也就叫做对象的引用。==也是比较的引用的值是否相同。

多态:
1、引用多态
父类的引用可以指向本类的对象
父类的引用还可以指向子类的对象
子类的引用不可以指向父类的对象
2、方法多态
创建本类对象时,调用的方法为本类方法
创建子类对象时,如果有重写调用方法是子类的对象,如果没有重写就调用父类。
不可以用父类的引用调用子类独有的方法。


引用类型转换:
向上无风险,向下的有风险,如何规避风险,那么就用instanceof修饰符避免类型转换的安全性问题。判断是其子类型。

抽象类
abstract修饰,public abstract class ,public abstract void 方法。
抽象方法只声明,不写内容。
含有抽象方法的类叫抽象类,继承抽象类的子类可以定义其他方法。

接口 可以实现多个接口。
一般命名首字母大写
修饰符必须是public,产量和方法都是抽象方法。
继承了抽象类,必须实现抽象类的抽象方法,调用了接口,必须实现接口的抽象方法。
继承父类要在调用接口之前。

异常,thread (erro.exception(runtimeexception))

String 对象创建后则不能被修改,所谓的修改其实就是创建了新的对象,所指向的内存空间不同,
一旦一个字符串在内存中创建,则这个字符串将不可改变。如果需要一个可以改变的字符串,我们可以是用StringBuffer或者StringBuilder。每次new一个字符串就是产生一个新的对象,即便两个字符串的内容相同,使用“==”比较只是比较他们的引用或者引用的地址。比较内容要用equals

使用 substring(beginIndex , endIndex) 进行字符串截取时,包括 beginIndex 位置的字符,不包括 endIndex 位置的字符

使用 indexOf 进行字符或字符串查找时,如果匹配返回位置索引;如果没有匹配结果,返回 -1

字符串 str 中字符的索引从0开始,范围为 0 到 str.length()-1
toLowerCase()//将字符串转换为小写
charAt()//获取索引位置为1的字符
getBytes()//将字符串转换为byte[].
 
基本类型和包装类之间的转换,double b =87.6  Double a = new Double(b); Double a = b;
自动装箱,手动装箱,自动拆箱,手动拆箱。double c = a.doubleValue();  double d = a;

基本类型和字符串之间的转换:Double.toString(a);Sg.valueof(a);Double.parseDouble(str);Double.valueof(str);

java集合框架:collection (list(arraylist) queue(linkedlist) set(hashset))map(hashmap)


Class类,万事万物皆对象,静态的类和成员是对象,普通的数据类型是不是对象

127.0.0.1本地回环地址 MySQL -uroot -p -P -h127.0.0.1

我:
String Buffer append 和String+之间的区别:
我:
StringBuffer的append方法的在内存中是放在一起的,+并不放在一起


数据库的自定义函数声明,存储过程的声明,存储引擎的认识
还有各种链接,内连接,左外链接,右外链接,还有各种子查询。

Map 泛型
Oracle 邮箱为qq邮箱,密码为SHAOke12345

控制层的Action 的操作,就是要把Dao中的各个方法封装成一个Action类
然后再主方法中进行调用这个Action类,来调用各个函数,比较的方便。