Java入门学习笔记

标签: Java
6人阅读 评论(0) 收藏 举报
分类:

Study report of Java


中级实训第一周的Java学习笔记,记录的比较粗略,而且不深入,毕竟教程限于篇幅也是比较粗略的,而且因为这个学期已经学习了C#,两者还是有不少共通之处。而且作为C系语言,C++也是有不少相像的地方的。


Java

粗略的看一下Java的语法,由于Java也是C系的语言,总体来说大部分的基本语法和C、C++是类似的。在这次学习中我也会对大部分内容较为粗略的看过去,而着重于查看Java与C++不同的地方。

基本的运行

# Helloworld.java
public class Helloworld {
    public static void main(String[] args) {
        Sysytem.out.println("Hello, world.");
    } 
}
  1. 文件名作为一个类,包裹在文件内容的最外层
  2. main函数作为一个static方法
  3. 输出要调用System.out.println()函数

数据类型

基本数据类型

分成4类8种
1. 逻辑型:boolean
2. 文本型:char
3. 整型:byte(1个字节),short(2个字节),int(4个)和long(8个)
4. 浮点型:doublefloat

注意float在声明和赋值时要加f
例如

float f = 3.131f;

注意String类型在Java中是类,是一个对象
jdk1.5中有StringStringBufferStringBuilder.StringBuilder

复合数据类型

Java是单根语言,所有的复合数据类型都是从Object类继承下来的,同时他们也都是类。

引用类型

通常也是类,声明变量时系统只会分配引用空间,而不是像基本类型一样的分配一份储存空间。要用new操作符来开辟数据空间。
这和C++有一点不同,C++是要显式的声明引用的。

流程控制语句

循环语句

主要分为三种循环控制语句
1. while
2. do-while
3. for

和C++的几种循环的语法没什么差别

分支语句

  1. if-else
  2. switch
    也一样,没什么区别,switch记得要加defaultbreak

跳转语句

  1. label:
    label:在C/C++中应该是配合goto语句服用的,然而为了程序的可读性C++早已淘汰了goto语句。当然Java的label和古老的汇编式的label还是有一些区别,具体可以在下边看出来。
  2. break [label]
    label这是一个可选参数,不加的话和C++的break是完全相同的,加了以后可以跳出label所标注的代码块。
    注意:不是跳转到label所标注的行
  3. continue [label]
    break一样,label是个可选参数,不加的话和C++相同,加了以后,会继续label所标注的代码块的循环。
  4. return

异常处理语句

  1. try-catch-finally
  2. throw

jdk拆箱和装箱

基本类型和对象型有不少的区别,为了使得基本数据类型和对象联系起来,Java提供了叫做包装类(wrapper)的东西,使得基本类型有着对应的对象类型。
比如intInteger可以相互转换,例如

int i = 0;
Integer j = 0;
j = i;
i = j;

同理BooleanbooleanCharacterchar……都是可以的。

值得注意的是,对象的比较和基本数据类型的比较还是不同的,在应用==等等比较符号时要特别注意。

数组

声明

int[] array = {1,2,3,4,……,n};
// 初始化内容
int[3] array = {1,2,3};
// 声明中说明数组大小
int[] array = new int[3];
// 用new来声明
int[][] matrix = new int[][];
// 二维数组

Arrays类方法

可以利用String Arrays,toString()方法,二维数组可以利用String Arrays.deepToString()方法。
比较时还提供了boolean Arrays.Equals()boolean Arrays.deepEquals()方法。
还可以利用int Arrays.binarySearch(array, 98)方法。

集合类

集合类放在java.util.*

  1. Set
  2. List
  3. Map
  4. Queue
    这些都是比较基础的类,他们还有不少子类,比如Map的HashMap等等

泛型

对于集合类可以使用泛型声明如

public Queue<String> q;

继承

public class Child_class extends Base {
    ...
}

注意: Java只能从一个父类继承

父类类型的变量可以放置子类类型的实体。

多态

// java 中的多态
class Shape {
    void draw() {}
    void erase() {}
}
//圆形
class Circle extends Shape {
    void draw() {
        System.out.println("Circle.draw()");
    }
    void erase() {
        System.out.println("Circle.erase()");
    }
}
//正方形
class Square extends Shape {
    void draw() {
        System.out.println("Square.draw()");
    }
    void erase() {
        System.out.println("Square.erase()");
    }
}

JAVA对于OOP的三个特性都已经见识到了,封装继承和多态

垃圾回收机制

自动回收没有被引用的实体对象所占用的内存,垃圾回收期比较可怜,他在系统空闲的时候才会运行,只要CPU有事情做就轮不到垃圾回收器,所以他的内存回收效率比较低,System.gc()函数可以让我们手动回收,可以提高性能。

方法重载和重写

重载是同一个类里方法名字相同,参数不同
重写是子类的方法覆盖父类的方法

协变返回

final声明

类声明中写final,表明不可派生子类
方法声明中写final,表明方法不可被重写覆盖
变量声明中写final,表明变量为常量不可修改

抽象类

abstract声明,结尾用;。和C++一样。
有抽象方法的类就是抽象类,不可以建立实例。

接口

变量全是final常量,并且方法全是抽象的类,就是接口,他比抽象类还要抽象。用implementsinterface

public interface Say {
    public void sayMessage();
}

public class SayHello implements Say {
    public void sayMessage() {
        System.out.println("hello");
    }
}

接口可以先继承一个类,然后再去实现其他的接口

输入输出

输入输出流

InputStreamOutputStream

骚操作

集合类的子类以及相关的函数

Iterator

List<Integer> int_list
for (Iterator<Integer> i=int_list.iterator(); i.hasNext(); ) {
    ...
}

...for( : )

public class overload {
//若干个相同类型的参数,用“...”代替
    public void pri(String... strings ){
        for (String str : strings) //for 这个循环语句也有迭代的意思
            System.out.print(str);
        }
public static void main(String[] args){
    new overload().pri("100jq"," 百家拳软件项目研究室"," www.100jq.com");
    }
}

...可以省略不少相同类型的参数,然后可以用for(type i : args)来迭代访问所有变量

getDeclaredMethods()

可以获得当前这个类中定义了的方法列表

查看评论

Java学习笔记-林信良 awz3 kindle

  • 2017年12月01日 15:14
  • 35.17MB
  • 下载

韩顺平java从入门到精通视频教程(全94讲)学习笔记整理(齐全).docx

  • 2014年11月04日 19:35
  • 1.52MB
  • 下载

java从入门到精通学习笔记(一)——基础篇

1.Java虚拟机、Java编译器和Java解释器 JVM:JVM有自己完善的硬件架构,如处理器、堆栈(Stack)、寄存器等,还具有相应的指令系统(字节码就是一种指令格式)。 JVM屏蔽了与具体操作...
  • qq_33004293
  • qq_33004293
  • 2017-10-26 09:11:31
  • 244

推荐初学者Java Web入门笔记及实例

在Java Web的学习过程中,参考了很多资料书以及例程,这里整理了JSP、Servlet、JavaBean的入门基础知识以及数据库基本操作实例和初学者进行分享。整个过程力求由浅入深,多动手实践,先有...
  • a153375250
  • a153375250
  • 2016-03-21 15:31:07
  • 3417

shiro 简单的身份验证 案例

Apache Shiro是Java的一个安全框架,Shiro可以帮助我们完成:认证、授权、加密、会话管理、与Web集成、缓存等. 简单的身份验证 项目目录:   首先,在shiro.ini...
  • ztx114
  • ztx114
  • 2017-10-26 11:27:02
  • 111

shiro安全框架|基础知识:登录逻辑

步骤说明:
  • u014677804
  • u014677804
  • 2014-05-31 09:05:43
  • 467

疯狂Java学习笔记(88)-----------值得拥有的10本书

Java是时下最流行的编程语言之一。市面上也出现了适合初学者的大量书籍。但是对于那些在Java编程上淫浸多时的开发人员而言,这些书的内容未免显得过于简单和冗余了。那些适合初学者的书籍看着真想打瞌睡,有...
  • u011225629
  • u011225629
  • 2015-06-18 08:51:47
  • 1898

Java学习超强笔记

  • 2009年10月04日 18:43
  • 38KB
  • 下载

Java学习笔记(必看经典)

  • 2011年01月11日 20:44
  • 64KB
  • 下载

葛格Java学习笔记

  • 2009年06月29日 22:37
  • 1.09MB
  • 下载
    个人资料
    等级:
    访问量: 1813
    积分: 137
    排名: 113万+
    最新评论