CoreJava 笔记总结

文章目录

  • CoreJava 笔记总结
  • 第三章 Java的基本程序设计结构
    • 数据类型
      • 1. 整型
      • 2. 浮点类型
      • 3. char类型
      • 4. boolean类型
    • 变量与常量
      • 1. 变量
      • 2. 常量
      • 3. 枚举类型
    • 运算符
      • 关系和boolean运算符
      • 数学函数与常量
      • 强制类型转换
      • 字符串
        • 空串与null串
        • 码点与代码单元
        • 构建字符串
    • 输入与输出
      • 读取输入
      • 格式化输出
      • 文件输入与输出
    • 控制流程
      • 条件语句
      • 循环
      • 确定循环
      • 多重选择
      • 中断控制流程的语句
    • 大数
    • ==**数组**==
      • 声明数组
      • 访问数组元素
      • ==for each循环==
      • 数组拷贝
      • 命令行参数
      • 数组排序
      • 多维数组
      • 不规则数组

第三章 Java的基本程序设计结构

  • punlic 访问修饰符
  • 类名: 以大写字母开头的名词, 骆驼命名法
  • 源代码的文件名字必须与公共类名字相同
  • main方法必须声明为public
  • 每个java应用程序都必须有一个main方法
public class ClassName
{public static void main(String[] args){program statements}
}
  • java通用语法: object.method(parameters)
  • 注释: /* xxx */ 或者 //xxx 或者 /** xxx */

数据类型

1. 整型

  • int (20亿左右 29) 4字节
  • short 最大32767
  • long
  • byte -128~127

2. 浮点类型

  • float 有后缀f/F 如3.14F

  • double双精度, 3.14默认为双精度, 也可以写为3.14d

  • 正无穷 负无穷 NaN(不是一个数字)
    Double.POSITIVE_IFINITY Double.NEGATIVE_IFINITY Double.NaN

3. char类型

  • char类型字面量的值单引号括起来, e.g.'A'

4. boolean类型

  • 布尔类型只有两个值true, false

变量与常量

1. 变量

  • 所有java语句以分号结束

  • 每个变量都有一个type: double, int...

  • 变量名: 一个由字母开头, 并且由字母,数字构成的序列

  • 以下是合法声明:

    • int i, j;
      Box box;
      Box aBox;
      //初始化
      int vacationDay = 12;
      double salary = 6400.0
      
  • var: 对于局部变量, 该关键字可以代替其类型


2. 常量

  • final: 指示常量
  • 常量名: 全部使用大写
  • 类常量:public static final double CM_PER_INCH = 2.54, 定义于main方法外部, public代表其他类也可以使用

3. 枚举类型

  • enum Size{SMALL, MIDDLE, LARGE, EXTRA_LARGE}

运算符

  • +, -, *, /, %

  • 如果public static strictfp void main(String[] args) , 那么这个类中所有方法使用严格的浮点计算

  • +=, -=, *=, %=, ++, --

关系和boolean运算符

  • ==, !=
  • <, >, <=, >=
  • &&, ||, !
  • 三元运算符 xx ? xx : xx
    • x < y ? x : y会返回较小的一个
  • 位运算符: &, |, ^, ~, <<, >> P43
  • 运算符优先级别P44

数学函数与常量

  • 平方根: Math.sqrt(4) --> 2
  • 幂运算: Math.pow(x, a) -->xa
  • 三角函数: Math.sin, Math.cos, Math.tan, Math.atan, Math.atan2
  • 指数函数,对数函数: Math.exp, Math.log, Math.log10
  • Π和e常量: Math.PI, Math.E
  • 静态导入: import static java.lang.Math.*, 导入后就不用带Math

强制类型转换

  • 截断小数:

    • double x = 3.14159;
      int nx = (int)x;
      
  • 舍入运算:

    • double x = 1.145;
      int nx = (int)Math.round(x);
      
    • 得到最接近的整数, round返回long


字符串

  • 字串: s.substring(fromIndex, toIndex);
  • 拼接: s1 + s2
  • join: 把多个字符串放在一起, 用一个界定符分隔
    • String.join("/", "S", "M", "L");
  • repeat: String s = "hello".repeat(2)
    • s = "hellohello";
  • 不可变字符: 利用拼接改变字符串对象
  • 字符串不是字符串数组, 不是char s[] = 'hello', 可以理解为 char* s = 'hello'
  • 检测字符串是否相等: s.equals(t)
    • 忽略大小写: "Hello".equalsIgnoreCase("hello")
  • == 运算符只能确定两个字符串是否在同一个位置上
  • compareTo: 类似于C的strcmp函数, java用s.compareTo(t) == 0...

空串与null串

  • 判空: s.length() == 0 或者 s.equals("")
  • 判null: s == null

码点与代码单元

  • length: 返回代码单元数量
  • codePointCount: 返回码点数量
    • int cpCount = s.codePointCount(0, s.length());
  • P48…

构建字符串

  • StringBuilder s = new StringBuilder();
    s.append(ch);
    s.append(str);String completedString = s.toString();
    

输入与输出

读取输入

  • 构造一个标准输入流

  • import java.util.*;

    • Scanner in = new Scanner(System,in);
      String name = in.nextline();
      String firstName = in.next();
      int age = in.nextInt();
      
  • 密码: 使输入不可见

    • Console cons = System.console();
      String username = cons.readLine("User name: ");
      char[] password = cons.readPassword("Password: ");
      

格式化输出

  • 和C语言类似

    • System.out.printf("%8.2f", 333.333333);
      
  • 用于printf的转换符: d, x, o, g, e, f, s, c

  • 增加分隔符

    • System.out.printf("%,.2f", 1000.0/3.0);
      

文件输入与输出

  • 读取文件

    Scanner in = new Scanner(Path.of("myfile.txt"), StandardCharset.UTF_8);
    
  • 写入文件

    PrintWriter out = new PrintWriter("myfile.txt", StandarsCharset.UTF_8);
    
  • 找到启动目录位置

    String dir = System.getProperty("user.dir");
    
  • 避免用一个不存在的文件构造Scanner:

    public static void main(String[] args) throws IOException....
    

控制流程

条件语句

  • if (condition)
    {statement1;statement2;
    }
    else
    {statement1;statement2;
    }
    

循环

  • while (condition){statement1;....
    }
    
  • do{statement1;....
    }while(condition);
    

确定循环

  • for(int i = 0; i < 100; i++)System.out.print(i )
    

多重选择

  • switch(choice)
    {case 1:...break;case 2:...break;...default:...break;
    }
    

中断控制流程的语句

  • 不带标签的break:

    while(i < 100)
    {...break;
    }
    
  • 带标签的break语句, 用于跳出多重嵌套的循环语句:

    ...
    read_data;
    while(i < 1000){for(...){...break read_data;}
    }
    
  • continue语句, 将控制转移到最内层循环的首部

    while(x < y)
    {System.out.print(x);x = in.nextInt();if (x < 0)continue;...
    }
    

大数

  • import java.math.*;

  • BigInteger , BigDecimal实现任意精度的整数和浮点数运算

  • 将普通树转换为大数:

    BigInteger a = BigInteger.valueOf(100);
    
  • 构造一个大数:

BigInteger big = new BigInteger("14862301485623021546230");
  • 大数的运算:
+ BigInteger c = big.add(b); // c = big + b;
* BigInteger d = c.multiply(b.add(BigInteger.valueof(2))); //d = c * (b + 2);
/ BigInteger e = d.divide(d);
- substract , % mod

数组

声明数组

  • int[] a , int a[]
  • int[] a = new int[100];
  • var a = new int[100];
  • int[] smallPrimes = {2, 3, 5, 7, 11, 13} 不需要new, 也不需要指定长度
  • new int[0];

访问数组元素

  • 数组长度: a.length

  • 初始化

    var a = new int[100];
    for(int i = 0; i < 100; i++)a[i] = i + 1;
    

for each循环

  • 格式:

  • for(variable: collection) statement

  • 这里的collection, 必须是实现了Iterable 接口的内对象或者是数组

  • for(int elem: a)System.out.print(elem)
    
  • 打印数组中的所有值

System.out.println(Arrays.toString(a));


数组拷贝

  • 允许将一个数组变量拷贝到另一个数组变量, 这时两个变量将引用同一个数组

  • int[] a = b;
    b[10] = 2; // now a[10] == 2
    
  • 全部拷贝的方法:

int[] b = Arrays.copyOf(a, a.length);
多余元素置0或false, 第二个参数太小就拷贝前面的元素

命令行参数

  • 命令行调用程序Message.java
java Message -g cruel world
  • 这里的args[0] == "-g"; args[1] = "cruel"; ...
  • 程序名没有存在args数组中

数组排序

  • Arrays.sort(a);
  • Arrays.binarySearch(a, startIndex, endIndex, value);

多维数组

  • double[][] a;

  • int[][] a = {{1, 2, 3},{4, 5, 60},
    }
    
  • for each循环:

    • for(double[] row: a)for(double[] col: row)...
      
  • 打印输出二维数组:

System.out.println(Arrays.deepToString(a));


不规则数组

  • int[][] a = new int[N][];
    for(int i = 0; i < N; i++)a[i] = new int[i+1];
    

CoreJava 笔记总结-第三章 Java的基本程序设计结构相关推荐

  1. 【Java核心技术阅读笔记】第三章 Java的基本程序设计结构

    1.注释 // /*  */ 不能嵌套,因为要注释的代码块中可能包含*/界定符 /**  */ 可以用来自动地生成文档(?不懂) 2.数据类型 Java是一种强类型语言. 8种基本数据类型:4种整型, ...

  2. Java核心技术 卷1 基础知识 学习笔记——第三章 java的基本程序设计结构

    1. 一个正整数除以0的结果为正无穷大,0/0或者负数的平方根的结果为NaN(不是一个数字): if(x==Double.NaN)//is never true,所有非数值的值都认为是不同的 if(D ...

  3. Core Java 第三章 Java基本的程序设计结构

    3.1 1.关键字class后紧跟类名(类名以大写字母开头,多个单词每个单词首字母大写,可接数字). 2.源代码文件名要与公有类名一致,并用.java做后缀名. 3.运行编译程序时,Java虚拟机从指 ...

  4. 《Java核心技术 ---- 基础知识》 ---- 第三章 java的基本程序设计结构

    一. java命名规则 类名 - 以大写字母开头的名词(骆驼命名法) 变量名 二.注释 行内注释 // 文本注释 /* */ 文本块注释 /** */ 三.数据类型 共8种基本类型,4种整型.2种浮点 ...

  5. 第三章 Java的基本程序设计结构

    目录 3.1 一个简单的Java应用程序 3.2 注释 3.3 数据类型 3.3.1 整型 3.3.2 浮点型 3.3.3 char类型 3.3.4 Unicode和char类型 3.3.5 bool ...

  6. 【Java核心计算 基础知识(第9版)】第3章 Java的基本程序设计结构

    本章要点 - 一个简单的Java应用程序 - 注释 - 数据类型 - 变量 - 运算符 - 字符串 - 输入输出流 - 控制流 - 大数值 - 数组 3.1 一个简单的Java应用程序 上图是一个最简 ...

  7. 读《Java核心技术 卷I》有感之第3章 Java的基本程序设计结构

    其实写这些东西挺累的,看的时候觉得很容易理解,写起来要将思想转换为文字有点小难受 3.1 一个简单的Java应用程序   定义了几个定理,具体如下: 如果当前源代码需要作为起始函数,那么需要保证其中的 ...

  8. 第三章 Java Servlet基础

    第三章 Java Servlet基础 3.6.2 转发 1.获得RequestDispatcher对象 2.RequestDispatcher对象调用forward()方法实现转发 请求转发工作原理 ...

  9. 机器学习理论《统计学习方法》学习笔记:第三章 k近邻法

    机器学习理论<统计学习方法>学习笔记:第三章 k近邻法 3 k近邻法 3.1 K近邻算法 3.2 K近邻模型 3.2.1 模型 3.2.2 距离度量 3.2.3 K值的选择 3.2.4 分 ...

最新文章

  1. vs2010 将.mc编译为.rc文件
  2. python中的self描述符__set__和__get__简单总结
  3. 使用.Net访问Office编程接口
  4. 第十三节:实际开发中使用最多的监视锁Monitor、lock语法糖的扩展、混合锁的使用(ManualResetEvent、SemaphoreSlim、ReaderWriterLockSlim)
  5. 这种反爬虫手段有点意思,看我破了它!
  6. oracle_jdbc新建实例,JDBC的操作步骤和实例
  7. 程序员别埋头苦干了,花时间学点薪资谈判技巧多赚一个亿可好?
  8. tf.train.slice_input_producer(转)
  9. Bailian4020 缺少的扑克牌【set】
  10. java学习笔记—标准连接池的实现(27)
  11. Telnet Sequence Diagram
  12. CH372或CH375的USB通讯问题解答
  13. hibernate 二级缓存 处理
  14. FTP服务器是什么【摘自IT百科】
  15. 15个好用的百度网盘搜索引擎
  16. weak_ptr介绍
  17. python疫情监控(爬虫+可视化)
  18. Python语言的动态性:运行时动态绑定,删除属性和方法
  19. 印象笔记Markdown思维导图
  20. Python一行代码能做什么,30个实用案例代码详解

热门文章

  1. 由于开发者通过接口修改了菜单配置_Android SDK开发艺术探索(四)个性化配置...
  2. 王道408数据结构——第七章 查找
  3. 全球最神秘的9大葡萄园...
  4. 世界上最美的40个小镇,你见过多少个?
  5. 托马斯反驳牛顿被骂,普朗克颜值过高遭上帝捉弄,狄拉克却因爱情成话痨
  6. 惊了!哆啦A梦里最能打的道具,居然真实存在!还打破了世界纪录,看完跪了....
  7. 一个常见的物理现象,直今还是未解之谜!
  8. 看OpenCV如何在python中实现图像检测!
  9. TensorFlow发布全新版本,又会带来哪些变革?
  10. 10分钟读懂人工智能、机器学习到底有什么关系