文档章节

Java核心技术卷1: Java基础知识汇总

fzyz_sb
 fzyz_sb
发布于 2016/07/09 11:43
字数 1074
阅读 231
收藏 4

字符串

字符串是不可改变的. 所以修改字符串通常需要用到substring方法:

String greeting = "Hello";
greeting = greeting.substring(0, 3) + "p!";
// Help!
System.out.println(greeting);

而判断字符串是否相等, 需要s.equals(t), 而不能使用"==", 是因为"=="只能确定两个字符串是否放在同一个位置上, 但是完全存在相同的字符串放在不同的位置上.

 

输入输出

标准输出直接用System.out.println()即可, 但是如果是标准输入的话, 则需要构建一个Scanner对象, 然后与System.in关联即可.

Scanner in = new Scanner(System.in);
System.out.println("What is your name?");
String name = in.nextLine();
System.out.println(name);

而基本的Scanner方法如下:
Scanner (InputStream in): 用给定的输入流创建一个Scanner对象.
String nextLine(): 读取下一行内容
String next(): 读取下一个单词
int nextInt()/nextDouble(): 读取并转换下一个整数/浮点数.
boolean hasNext()/hasNextInt()/hasNextDouble(): 检测是否还有表示整数或浮点数的写一个字符序列.

要想对文件进行读取, 需要一个用File对象构造一个Scanner对象, 而写入一个文件则需要构造一个PrintWriter对象:

import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;
import java.io.File;

/**
 * Created by lgt on 16/6/23.
 */
public class Welcome {
    public static void main(String[] args)
    {
        try {
            Scanner in = new Scanner(new File("myfile.txt"));
            PrintWriter out = new PrintWriter("output.txt");
            while (in.hasNext()) {
                String s = in.nextLine();
                out.write(s);
            }
            out.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

数组

Java中的数组间拷贝时候, 实际上是两个变量引用了同一个数组. 一般情况下, 需要使用Arrays.copyOf方法进行深拷贝:

import java.io.FileNotFoundException;
import java.util.Arrays;

/**
 * Created by lgt on 16/6/23.
 */
public class Welcome {
    public static void main(String[] args)
    {
        int[] a = {1, 2, 3, 4, 5};
        int[] b = a;
        b[1] = 111;
        // 111
        System.out.println(a[1]);

        int[] c = {1, 2, 3, 4, 5};
        int[] d = Arrays.copyOf(c, c.length);
        d[1] = 111;
        // 2
        System.out.println(c[1]);
    }
}

面向对象程序设计概述

类: 构造对象的模板或蓝图.

封装: 将数据和行为组合在一个包中, 并对对象的使用者隐藏了数据的实现方式.对象中的数据称为实例域, 操纵数据的过程称为方法.

实现封装的关键在于绝对不能让类中的方法直接的访问其他类的实例域.

对象有三个主要特性:

1. 对象的行为--可以对对象施加哪些操作/方法.

2. 对象的状态--当施加那些方法时, 对象如何响应?

3. 对象标识--如何辨别具有相同行为与状态的不同对象?

 

使用预定义类

类的对象必须初始化后才能使用, 即类的对象类似于C++的指针, 而非引用.

一个对象变量并没有实际包含一个对象, 而仅仅引用一个对象.

import java.util.Date;

/**
 * Created by lgt on 16/6/23.
 */
public class Welcome {
    public static void main(String[] args)
    {
        String s = new Date().toString();
        System.out.println(s);
        // Error
        Date deadline;
        deadline.toString();
    }
}

自定义类

基本的格式如下:

class Employee
{
    private String name;
    private double salary;
    private Date hireDay;

    public Employee(String n, double s, int year, int month, int day)
    {
        name = n;
        salary = s;
        GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day);
        hireDay = calendar.getTime();
    }

    public String getName()
    {
        return name;
    }

    // ...
}

1. 构造器和类同名, 而且总是伴随着new操作符的执行而调用.
2. 不要返回一个引用对象, 否则在类外就可以对这个变量进行修改, 如:

public Date getHireDay()
{
    return hireDay;
}

Employee e = new Employee("leicj", 1234, 2011, 1, 1);
Date d = e.getHireDay();
d.setTime(d.getTime() - 1000000000);
// e中的hireday被修改.
System.out.println(e.getHireDay());

如果需要返回一个可变对象的引用, 则对它进行克隆即可:

public Date getHireDay() {
  return hireDay.clone();
}

3. 可以将实例域定义为final, 这种情况下必须初始化, 但后续无法对这个变量进行更改.

4. 默认构造函数只会在没有任何构造器的情况下生成. 构造函数调用构造函数需要用到this:

public Employee(double s) {
  this("Employee #" + nextId, s);
  nextId++;
}

 

Java允许使用包(package)将类组织起来. 类的导入使用import关键字, 如果导入静态方法, 则使用import static.
如果要打包, 则使用package关键字即可.

下面是一个基本的目录结构:

src
  --com.horstmann.corejava
    --Employee.java
  --PackageTest

而Employee中的代码为:

package com.horstmann.corejava;

public class Employee
{
    private String name;

    public Employee(String n)
    {
        name = n;
    }

    public String getName()
    {
        return name;
    }
}

则我们可以在PackageTest中通过: import com.horstmann.corejava.*; 进行调用.

© 著作权归作者所有

共有 人打赏支持
fzyz_sb
粉丝 408
博文 209
码字总数 447144
作品 0
武汉
程序员
私信 提问
Java程序员必读书单,家族又添新成员

点击关注异步图书,置顶公众号 每天与你分享IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书。 ——异步小编 有些革命出其不意地吸引了全世界的眼球。Twitter、Linux操作系统和...

异步社区
2018/05/09
0
0
java 7 入门书籍

一、Java从入门到精通 《Java从入门到精通(第3版)》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用Java语言进行程序开发需要掌握的知识。 《Java从入门到精通(第3版...

modernizr
2014/05/15
6.9K
9
Java程序设计经典300例

《Java程序设计经典300例》共分为3篇。 第1篇 基础篇(第1~5章)本篇主要内容包括:Java语言基础、流程控制、数组、字符串和面向对象编程。通过本篇的学习,读者可以掌握Java开发环境的配置...

请叫我院长
2013/12/03
402
0
java学习路线及资源下载,持续整理中

学习路线图:http://blog.csdn.net/shenzhq1980/article/details/48470337 1、java学习经典书籍_基础编程篇 下载地址:http://blog.csdn.net/shenzhq1980/article/details/48375543 书籍: ......

迷茫80
2015/09/21
512
1
JVM系列第1讲:Java 语言的前世今生

Java 语言是一门存在了 20 多年的语言,其年纪比我自己还大。虽然存在了这么长时间,但 Java 至今都是最大的工业级语言,许多大型互联网公司均采用 Java 来实现其业务系统。大到国际电商巨头...

陈树义
2018/11/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

使用Maven打包Docker镜像-Jenkins版

前提:Jenkins服务器上安装好Docker,创建Jenkins任务,配置好代码来源,和Build配置: pom.xml中添加docker-maven-plugin: <plugin> <groupId>com.spotify</groupId> <artifactI......

莫在全
21分钟前
0
0
rabbitmq

灰暗
今天
1
0
Flink

flink HA部署 flink搭建,采用分布式部署方式,分别为A,B,C三个节点。其中A为master;A,B,C为worker。 本文使用的用户是hadoop用户(自己新建) 先决条件 Java 1.8.x or higher scala 自己使用...

-九天-
今天
2
0
数据中台和传统数仓的区别

中台系统把业务层同性的算法能力,服务能力,业务能力高度集成,有效组织 ,动态规划。更好的帮助上层业务。 今天就让我们看看关于数据中台的问答吧。 1 Q : 什么是数据中台? A : 数据中台是...

hblt-j
今天
5
0
Java在什么时候会出现内存泄漏

在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个特点,首先,这些对象是可达的,即在有向图中,存在通路可以与其相连;其次,这些对象是无用的,即程序以后不会再使用这些对...

群星纪元
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部