java 从零开始
来源:互联网 发布:unity优化方案 编辑:程序博客网 时间:2024/06/06 01:38
我们作为程序员编写程序,就是在和计算机进行沟通,学好了编程,就是让人可以更随心的同计算机进行沟通。这种沟通是一种创造性的工作,创造性的工作就是要参与到这个世界的创造中来。
我们在这里将从最java的最基础学起。
首先,我们来看java jdk的安装。jdk下载后,安装到计算中后,要设置两个环境变量。path环境变量的设置是在电脑的高级属性中,修改增加 jdk 的bin目录,注意,在这里要先用分号;检查设置成功的方法是在命令行下输入 java -version。classpath环境变量的设置是电脑的高级属性中,增加classpath 属性,然后把其值设置为英文的点号(.)。
环境变量是一些列键值对。
path 环境变量是外部命令路径。classpath环境变量是class(类文件)的路径,用点,表示的是当前路径。
JDK中包含bin,include,lib,jre等。
JRE是java运行环境。JRE包括java虚拟机,java平台核心类文件,其它支持类文件。
JVM虚拟机,是由软件模拟出来的计算机。
JVM可以有运行在各种硬件平台机器上得版本,而java程序是二进制代码,它直接运行在JVM上。所以java跨平台。
java代码,Hello world.
public class Hello{
public static void main(String args[]) {
System.out.println("Hello world!");
}
}
编译 javac Hello.java
生成 Hello.class
执行 java Hello
注意,在这里执行的时候,不要加扩展名 class .
我们在写程序的时候要养成一些基本的好习惯,比如:成对的符号,成对书写;注意代码的缩进;注意代码的大小写等。
java的语法,java 的语义。
记录清晰,概念准确。反复练习,熟能生巧。
计算机的特点,计算机是一种极度精确地设备,存储信息要明确的指出位置和大小。
java语言的变量声明,就是指出变量的位置和大小。
变量命名规范,这里以驼峰命名为例,也是为主:
1.变量命名应该用有意义的英文单词。
2.变量名如果只有一个单词,则所有字母小写。
3.变量名如果由多个单词组成,则从第二个单词开始首字母大写。
java使用 Unicode编码,在Unicode中的字母和汉字使用的是一样多的长度4个字节,所以 java中的cha 是可以表示汉字的。
比如 char='中' 。
java的运算符和表达式。
java的分支语句。
顺序结构,分支结构,循环结构。
面向对象。
面向对象是一种编程方法,而不是一门编程语言;
面向对象是一种思维方式。
学习面向对象的方法。
掌握一门面向对象的语言的语法;
掌握面向对象的思维方式,多训练才能有面向对象的思维;
熟悉面向对象设计原则,最终极目标就是要减少重复代码,比如开放封闭原则等;
掌握面向对象的设计模式,前人设计经验的总结。
**** 思维方式 ----> 设计原则 ----> 设计模式
**** 方式 ----> 原则 ----> 模式
思维方式的转变:
先虑谁来做,后确定怎么做;
先虑整体,后考虑局部;
先考虑抽象,后考虑具体。
创建类的方法
创建对象的方法
对象和对象的引用
Person zhangsan=new Person("zhangsan");
1. 在占内存上声明一个引用 zhangsan;
2.在对内存上创建一个对象;
3.把对象赋值给引用。
这里可以画出一个图,其中表示出占内存,和堆内存。
对象的使用方法;
多对象的创建方法;
匿名对象的创建和使用方法,匿名对象就是一次性的对象!
函数的重载,java允许函数重名。
两个或者多个函数在同一个类中;
函数名相同;
参数列表不同。
构造函数作用。
默认的构造函数由编译器检查创建;
带参数的构造函数可以给属性赋予初始值;
如果有带参数的构造函数,那么就不可以再用为空的构造函数。
使用 this 调用成员变量和成员函数;
this 是一个对象,代表调用者的对象。也就是 代表 自己。
可以用来区分 成员变量 和 参数变量。
使用this调用构造函数;
构造函数赋值的时候,可以使用this 来区分成员变量和构造函数的参数。
***使用 this 来调用 本类的 其它内部构造函数!!!消除重复代码!
******this函数的调用必须要写在第一个语句,一个中只能调用一次,若多次,则在前面前面调入。
********这可以看做是构造函数通过this来进行串联,一次只能联一个!
class Person{
String name;
int age;
String address;
Person(){
}
Person(String name,int age){
this.name=name;
this.age=age;
}
Person(String name ,int age, String address){
this(name,age);
this.address=address;
}
}
static关键字的用法。
1.定义静态变量:
可以直接通过类名直接调用,但不是必须;
多个对象共用静态变量。
2.定义静态函数:
可以直接通过类名调用,但不是必须的;
静态函数中无法引用非静态的成员变量;
3.定义静态代码块:
直接在类中对代码段使用 static { }
装在类的时候执行,然后再解释去执行对象的建立。
主要用来给静态变量赋予初始值。
java的继承
java只支持单继承;
只修改父类,便于维护;
减少重复代码。
生成子类的过程;使用super调用父类构造函数;
继承的时候,构造函数不能被继承;
在子类的构造函数中必须先调用父类的构造函数,如果子类没有显示声明调用的话,编译器会自动先加上super();
使用super()的时候,一定是在子类构造函数的第一行。
函数的复写,override,重新写父类函数的实现,也叫重写;
它必须满足两个条件,1是父子类关系,2是函数的声名完全一样;
override 叫重写,用在父子类中,参数相同;
overload叫重载,用在同个类中,参数不同;
super调用父类的成员函数;
super.fuctest();
这种super调用,可以写在函数中的各个位置,要看具体需要。
对象的转型。
向上转型:将子类的对象赋值给父类的引用,这个引用能够调用哪些成员变量取决于这个引用的类型。
向下转型:将父类的对象赋值给子类的引用。
*** 向下转型是先把子类向上转型为父类,然后再把父类转换为子类(强制);不可以直接把父类对象转换为子类对象!!!
抽象函数:
只有函数的定义,没有函数体的函数被称为抽象函数。
abstract void myfun();
抽象类:
使用abstract修饰的类称为抽象类,它有以下三个特点。
1.抽象类不能够生成对象;
2.如果一个类当中包含有抽象函数吗,那么这个类必须声明为抽象类;
3.如果一个类当中没有抽象函数,那么这个类也可以被声明为抽象类。
抽象类就是用来被继承的;
抽象类是可以有构造函数的,抽象类的构造函数是为子类的构造函数通过super 来调用构造函数。
包的概念和访问
将类放置到一个包当中,需要使用package "包名"
编译时需要使用 -d 参数,该参数的作用是依照包名生成相应的文件夹
一个类的全名应该是 包名. 类名
包名的命名规范:
1.要求包名的字母都要小写;
2.包名一般是你的域名倒过来写;
软件包是为java类提供命名空间;
打包时需要使用package指令;
一个类的全名应该是 类名 + 包名
public 可以修饰类、成员变量和成员函数;
没有任何限制,同一个包当中,或者不同包当中都可以自由访问;
private 只可以修饰成员变量和成员方法,只能在本类中使用。
default ,不写就是默认的,可以修饰类,成员变量,成员函数;在同一个类当中可以自由访问;
访问权限与继承的关系:
如果子类和父类不在同一个包当中, default的成员变量和成员函数,不能在继承中被使用,在同一个包中可以;
private的成员变量和成员函数即使在同一个包中,也不能被使用;
protected,拥有与default一样的功能,但该功能只能修饰成员变量和成员函数。可以被继承访问,但不可以被不同的类访问。
public -->protected -->default -->private
import 导入其它包。这样要用其它包的public 类,那么就可以简单写类名就可以了。
***接口是面向对象的核心!
使用interface定义;
接口当中的方法都是抽象方法,默认不用写;
接口当中的方法权限都是public,默认不用写;
实现接口使用implents关键字;
一个类可以实现多个接口;
一个接口可以继承多个接口;
简单静态工厂模式,用静态函数和向上转型。
java异常
中断正常指令流的事件 。
jdk的异常包括,基类 是 Throwable,两个子类 Exception 和 Error .
产生Error的时候,虚拟机将关机。
try{
可能出异常的代码;
}catch{
处理异常的代码;
}finally{
释放资源等的代码,无论是否出异常都要执行;
}
Spring的AOP事务管理默认是针对unchecked exception回滚。
Exception作为基类,下面还分checked exception和unchecked exception。如果客户端可以通过其他的方法恢复异常,那么这种异常就是checked exception;
如果客户端对出现的这种异常无能为力,那么这种异常就是Unchecked exception;简单来说,继承于RuntimeException的都是unchecked exception。
Error:
1.总是不可控制的(unchecked)
2.经常用来用于表示系统错误或低层资源的错误
3.如何可能的话,应该在系统级被捕捉
Exception:
1.可以是可被控制(checked) 或不可控制的(unchecked)
2.表示一个由程序员导致的错误
3.应该在应用程序级被处理
Java 中定义了两类异常:
1) Checked exception: 这类异常都是Exception的子类 。异常的向上抛出机制进行处理,假如子类可能产生A异常,那么在父类中也必须throws A异常。可能导致的问题:代码效率低,耦合度过高。
2) Unchecked exception: 这类异常都是RuntimeException的子类,虽然RuntimeException同样也是Exception的子类,但是它们是不同的,它们不能通过client code来试图解决,所以称为Unchecked exception 。
throw :抛出异常,使用在函数中;
在抛出unchecked exception的时候不需要捕捉,但是在抛出checked exception需要自己捕捉。
throws:声明异常,使用在函数声明尾巴;
表示函数有可能带异常,这样对checked exception就可以抛出到调用中去捕捉异常。
IO编程
IO的分类
第一种分发:输入,输出;
第二种分发:字节流,字符流;
第三种分发:节点流,处理流。
字节流的核心类:
InPutStream, OutPutStream ,这两个类都是抽象类,这两个是所有字节流的父类,
FileInPutStream, FileOutPutStream
大文件的读写
字符流的使用
字符流的基础类是Reader,Writer;对应生成的子类包括 FileReader, FileWriter
处理流 BufferReader ,主要使用它的readLine()方法。
节点流和处理流:
节点流是被修饰者,处理流是修使者。
- java 从零开始
- Java从零开始
- 《Java从零开始》
- 从零开始学Java (一)
- 从零开始学习JAVA
- java从零开始之一
- java基础从零开始
- Java从零开始之容器
- java基础教学,从零开始
- Java从零开始(一)
- 从零开始JAVA AOP
- 从零开始JAVA生活
- java——从零开始
- 从零开始搭建Java环境
- 从零开始学 Java
- 从零开始学 Java
- 从零开始的JAVA学习
- 从零开始学java
- grep命令的基本用法
- 大三下,分方向,矛盾中,敬请赐教
- 拖延症
- 关于visual studio类视图和资源视图不显示类和资源的问题
- 隐藏编辑框光标
- java 从零开始
- 自动给输入的日期加上 “-”如: “2011-11-11”
- 赢在中国给80后的建议
- imgareaselect 图片裁剪导致IE浏览器挂掉的问题
- list类型的数据转化成json类型的数据
- 输了!
- 《那些年啊,那些事——一个程序员的奋斗史》——47
- 如何有效地查找内存泄露(有效、轻量级的umdh.exe)
- 二个txt文件内容比较