3 Java的基本程序设计结构

3.1 一个简单的 Java 应用程序(略)

3.2 注释(略)

3.3 数据类型

8种基本类型

byte,short,int,long

float,double

char(Unicode)

boolean

3.4 变量

声明,初始化,赋值,final

3.5 运算符

java.lang.Math

///API
Math.sqrt(double x);
Math.pow(double x, double a);
Math.floorMod(position+adjustment, 12);
Math.sin
Math.cos
Math.tan
Math.atan
Math.atan2
Math.exp
Math.log
Math.log10
Math.PI
Math.E
long Math.round(double)

了解:StrictMath类

  • 枚举类型
enum Size {SMALL, MEDIUM, LARGE, EXTRA_LARGE}
Size size = Size.SMALL;

3.6 字符串

码点和码元



要想得到第 i 个码点

int index = str.offsetByCodePoints(0, i) ;

int cp = str.codePointAt(index);

java.lang.StringBuilder

int length();
StringBuilder append(String str);
StringBuilder append(Char c);
void setCharAt(int i, char c);
StringBuilder insert(int offset, String str);
StringBuilder insert(int offset, Char c);
StringBuilder delete(int startindex, int endlndex);
String toString();

3.7 输入输出

3.7.1 读取输入

  • java.util.Scanner
Scanner in = new Scanner(System.in);
///API
Scanner (InputStream in);
String nextLine();
String next();
int nextInt();
double nextDouble();
boolean hasNext();
boolean hasNextInt();
boolean hasNextDouble();
  • java.io.Console
Console cons = System.console();
String username = cons.readLine("Username: " );
char[] passwd = cons.readPassword ("Password: ");
///API
static char [] readPassword(String prompt, Object... args);
static String readLine(String prompt , Object... args);
//显示字符串 prompt 并且读取用户输入,直到输入行结束。args参数可以用来提供输人格式

3.7.2 格式化输出

  • System.out.printf(); 类似于C语言的printf()
  • 可以使用静态的String.format方法创建一个格式化的字符串,而不打印输出
    String message = String.format("Hello, %s. Next year, you'll be %d", name, age);

3.7.3 文件输入与输出

读取:使用文件对象构造Scanner。

Scanner in = new Scanner(Paths.get("myflle.txt"), "UTF-8");

写入:PrintWriter,可以像输出到System.out一样使用printprintln以及printf命令。覆盖写入

PrintWriter out = new PrintWriter("myfile.txt", " UTF-8");
out.print("test str");
// 必须flush或者close才能写入
// out.flush();
out.close();

3.8 控制流程

  • 不能在嵌套的两个块中声明同名的变量
  • case标签只能是:
    • char byte short int 的常量表达式
    • 枚举常量
    • 字符串字面量
  • 带标签的continue和break,可以跳出多重嵌套

3.9 大数值

java.math.BigInteger 大整数

///API
BigInteger add(BigInteger other);
BigInteger subtract(BigInteger other)
BigInteger multiply(BigInteger other);
BigInteger divide(BigInteger other);
BigInteger mod(BigInteger other);
int compareTo(BigInteger other);
static BigInteger valueOf(long x);

java.math.BigDecimal 大实数

///API
BigDecimal add(BigDecimal other);
BigDecimal subtract(BigDecimal other)
BigDecimal multiply(BigDecimal other);
BigDecimal divide(BigDecimal other, RoundingMode mode);
BigDecimal mod(BigDecimal other);
int compareTo(BigDecimal other);
static BigDecimal valueOf(long x);
static BigDecimal valueOf(long x, int scale);

3.10 数组

数组是一种数据结构。

foreach循环:for (variable : collection ) statement

int[] a = new int[10];
// 赋值
// foreach
for (int element : a)
System.out.println(element);
System.out.println(Arrays.toString(a));

java.util.Arrays

/// API
static String toString (type[] a);
static type copyOf(type[] a, int length);
static type copyOfRange(type[] a, int start , int end);
static void sort(type[] a);
static int binarySearch(type[] a, int start, int end, type v);
static void fill(type[] a, type v);
static boolean equals(type[] a, type[] b);
  • 小例子:从100个数中抽出10个不重复的数

  • 多维数组

int[][] a = new int[10][5];
// 赋值
for(int[] row : a)
for(int value : row)
System.out.println(value);
System.out.println(Arrays.deepToString(a));
int[][] odds = new int[N + 1][];
for (int i = 0; i <= N; i++)
odds[i] = new int[i + 1];

【阅读笔记】Java核心技术卷一 #1.Chapter3的更多相关文章

  1. 【阅读笔记】Java核心技术卷一 #0

    这是一篇备忘性质的读书笔记,仅记录个人觉得有用的知识点 本文作为一个目录索引,部分章节跳过 吐槽:此书中文翻译有不少地方不太通顺,这种情况我要把英文版对应的部分也读一遍才能明白(说实话,英文里的从句表 ...

  2. java核心技术卷一

    java核心技术卷一 java基础类型 整型 数据类型 字节数 取值范围 int 4 +_2^4*8-1 short 2 +_2^2*8-1 long 8 +_2^8*8-1 byte 1 -128- ...

  3. 对《Java核心技术卷一》读者的一些建议

    <Java核心技术卷一>是唯一可以和<Java编程思想>媲美的一本 Java 入门书.单从技术的角度来看,前者更好一些.但上升到思想层面嘛,自然后者更好,两者的偏重点不同. 思 ...

  4. 读《java核心技术卷一》有感

    过去一个多月了吧.才囫囵吞枣地把这书过了一遍.话说这书也够长的,一共706页.我从来不是个喜欢记录的人,一直以来看什么书都是看完了就扔一边去,可能有时候有那么一点想记录下来的冲动,但算算时间太紧,很多 ...

  5. 【阅读笔记】Java核心技术卷一 #6.Chapter8

    8 泛型程序设计 8.1 为什么要使用泛型程序设计 类型参数(type parameters)(E.T.S...) 通配符类型(wildcard type)(?) 注意这两者用法用处并不同. 8.2 ...

  6. 【阅读笔记】Java核心技术卷一 #5.Chapter7

    7 异常.断言和日志 在 Java 中,如果某个方法不能够采用正常的途径完整它的任务,就可以通过另外一个路径退出方法. 在这种情况下,将会立刻退出,并不返回任何值,而是抛出(throw)一个封装了错误 ...

  7. 【阅读笔记】Java核心技术卷一 #4.Chapter6

    6 接口.lambda 表达式与内部类 6.1 接口 6.1.1 接口概念 接口绝不能含有实例域:但在接口中可以定义常量,被自动设为 public static final 接口中的所有方法自动地属于 ...

  8. 【阅读笔记】Java核心技术卷一 #3.Chapter5

    5 继承 5.1 类.超类和子类 5.1.1 定义子类 超类(superclass)和子类(subclass), 基类(base class)和派生类(derived class), 父类(paren ...

  9. 【阅读笔记】Java核心技术卷一 #2.Chapter4

    4 对象和类 4.1 面向对象程序设计概述(略) 4.2 使用预定义类 java.time.LocalDate static LocalDate now(); static LocalDate of( ...

随机推荐

  1. DOS命令行(1)——Windows目录与文件应用操作

    cd 1.使用cd快速切换到指定盘符与目录中 命令格式1:cd [/d] [<盘符>][<路径>] 或 chdir [/d] [<盘符>][<路径>] ...

  2. Java知识复习(四)

    最近准备跳槽,又要好好复习基本知识了.过了个年,前面刚接触的springboot也只能先放放了.就先把自己复习了哪些罗列出来吧. Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用== ...

  3. 『心善渊』Selenium3.0基础 — 6、Selenium中使用XPath定位元素

    目录 1.Selenium中使用XPath查找元素 (1)XPath通过id,name,class属性定位 (2)XPath通过标签中的其他属性定位 (3)XPath层级定位 (4)XPath索引定位 ...

  4. 小程序动态修改页面标题setNavigationBarTitle

    可以使用setNavigationBarTitle方法动态设置页面标题 wx.setNavigationBarTitle({ title: options.name, })

  5. 微信sdk上传图片大小1k,损坏的问题以及微信上传图片需要的配置

    微信公众号的appid和appsecret有问题,会导致上传图片大小为1k这个问题 微信上传图片需要设置公众号的'JS接口安全域名'

  6. 非静态的字段、方法或属性“System.Web.UI.Page.ClientScript.get”要求对象引用

    解决Response.Write("<script>alert('修改失败,请稍后再试!');</script>");布局错误的问题 在后台CS代码(不是C ...

  7. Libevent2.1.8版在Liunx中编译安装遇到的问题

    Libevent2.1.8版在Liunx中编译安装遇到的问题 前言:在网上找了很久,都没有一个明确的解决方法,通过分析可能的原因,将自己实际操作及解决的成功结果记录如下,以供遇到相似的问题,能提供思路 ...

  8. Vue 动态参数

    v-on和v-bind可以动态绑定一个参数,用[]来绑定一个可以改变的值. <li v-on:[event]="print"></li> <scrip ...

  9. AcWing 342. 道路与航线

    #include<bits/stdc++.h> using namespace std; const int N=2e5+5; int h[N],cnt,to[N],nxt[N],vis[ ...

  10. Spring-Redis缓存业务优化(通配符删除、两种自定义缓存时长)

    application.yml配置 spring:    cache:     type: REDIS     redis:       time-to-live: PT300S # 默认缓存秒数   ...