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

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_IFINITYDouble.NEGATIVE_IFINITYDouble.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);
多余元素置0false, 第二个参数太小就拷贝前面的元素

命令行参数

  • 命令行调用程序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];
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311397.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python高级编程知识点_(转)python 高级编程技巧学习笔记

转自https://www.jianshu.com/p/104cec085611&#xff0c;部分图出不来&#xff0c;mark一下&#xff0c;关键时候供查看。第二章 数据结构相关话题2.1、筛选数据两种方式filter函数&#xff1a;filter(lambda x: x>0, data)注意&#xff1a;python3 需要把filter的结果转为…

.NET Core开发实战(第15课:选项框架:服务组件集成配置的最佳实践)--学习笔记...

15 | 选项框架&#xff1a;服务组件集成配置的最佳实践这一节讲解如何使用选项框架来处理服务和配置的关系选项框架的特性&#xff1a;1、支持单例模式读取配置2、支持快照3、支持配置变更通知4、支持运行时动态修改选项值在设计系统的时候需要遵循两个原则&#xff1a;1、接口…

UVA - 572 Oil Deposits-dfs找连通块

Discription 给定一个包含 *的二维数组&#xff0c;输出有几个是联通的&#xff0c;如果一个在另外一个相邻的八个方向则视作相邻。 Input 包含 *的二维数组。 Output 输出联通的个数 解题思路&#xff1a; 从每一个格子出发&#xff0c;递归遍历它周围的格子&#xff0c;每次…

HTMLCSS 超简单的前端设计入门-1!

第一个网页 文章目录第一个网页注释元素(标签,标记)元素的嵌套标准的文档结构语义化什么是语义化为什么需要语义化?文本元素hpspanpreHTML 实体a元素href 属性target属性路径的写法站内内资源和站外资源绝对路径和相对路径Emmet 注释 注释不参与运行 书写方式(html) <!-…

【朝夕技术专刊】WebApi部署多服务器配置Nginx负载均衡

欢迎大家阅读《朝夕Net社区技术专刊》第3期我们致力于.NetCore的推广和落地&#xff0c;为更好的帮助大家学习&#xff0c;方便分享干货&#xff0c;特创此刊&#xff01;很高兴你能成为首期读者&#xff0c;文末福利不要错过哦&#xff01;01PARTCoreWebApi教程本地演示环境Vi…

sprintf()函数的使用

sprintf&#xff08;&#xff09;&#xff1a; 函数功能&#xff1a;把格式化的数据写入某个字符串 函数原型&#xff1a;int sprintf( char buffer, const char format [, argument] … ); 返回值&#xff1a;字符串长度&#xff08;strlen&#xff09; 例子&#xff1a; cha…

CoreJava 笔记总结-第四章 对象与类

文章目录第四章 对象与类使用预定义类对象与对象变量Java库中的LocalDate类更改器方法和访问器方法用户自定义类用var声明局部变量使用null引用隐式参数与显示参数基于类的访问权限私有方法final实例字段静态字段与静态方法静态字段静态常量静态方法工厂方法main方法方法参数对…

windows路由表 重启后就还原了_绕过Apple id并可以随意重启的终极方案来了 (Windows下操作)...

▲请务必点击上方的蓝字关注我们哦&#xff01;「做有用的文章」我们知道自从Cheak M8漏洞出现后&#xff0c;使得A11-A7设备可以绕过AppleID使用&#xff0c;但是有着许多限制&#xff0c;例如不能重启&#xff0c;不能打电话使用蜂窝数据。如今针对无法修复蜂窝数据的Apple I…

UVA - 725 Division-sprintf的妙用

题目&#xff1a; 输入整数n&#xff0c;按从小到大顺序输出所有形如abcde/fghijn的表达式&#xff0c;其中a~j 恰好为0~9的一个排列&#xff08;可以有前导0&#xff09;&#xff0c;2<n<79 解题思路&#xff1a; 暴力枚举。 下面这代码暴力dfs&#xff0c;结果超时了…

基于.NET下的人工智能系列专题|.NET下的人工智能系列专题|用Keras.NET 做一个图像识别的训练...

.NET Core 的应用场景越来越广&#xff0c;开源社区也不断壮大&#xff0c; .NET Core在机器学习领域不断发展ML.NET外&#xff0c;也通过结合Tensorflow.NET去完善ML.NET在深度学习领域的功能&#xff0c;在ML.NET 1.3开始迈出了非常重要的一步。这不仅是微软拥抱开源的策略&a…

CoreJava 笔记总结-第五章 继承

文章目录第五章 继承类、超类和子类定义子类覆盖方法子类构造器多态阻止继承: final类和方法强制类型转换抽象类受保护访问访问控制修饰符小结Object: 所有类的超类Object类型的变量equals方法相等测试与继承hashCode方法toString方法泛型数组列表声明数组列表访问数组列表元素…

WTM系列视频教程:WebApi

文字摘要&#xff1a;“今天跟大家聊聊WTM中的WebApi&#xff0c;WebApi直接继承Controller Base&#xff0c; 他实际上比普通的Controller要更简单&#xff0c;流程更短&#xff0c;因为它不需要处理关于界面的问题。”“实际上如果我们使用普通Controller返回Json&#xff0c…

《C++ Primer》2.1.3节练习

#include <iostream> using namespace std;int main() {cout << "2\x4d\012";cout << "2\tM\n";return 0; }//\x4d输出M //\012输出换行 //\t输出制表符

CoreJava 笔记总结-第六章 接口、lambda表达式与内部类

文章目录第六章 接口、lambda表达式与内部类接口接口的概念接口的属性接口与抽象类静态和私有方法默认方法解决默认方法冲突接口与回调Comparator接口对象克隆lambda表达式函数式接口方法引用构造器引用变量作用域处理lambda表达式再谈Comparator类内部类使用内部类访问对象的状…

【复杂系统迁移 .NET Core平台系列】之静态文件

源宝导读&#xff1a;微软跨平台技术框架—.NET Core已经日趋成熟&#xff0c;已经具备了支撑大型系统稳定运行的条件。本文将介绍明源云ERP平台从.NET Framework向.NET Core迁移过程中的实践经验。一、背景随着ERP的产品线越来越多&#xff0c;业务关联也日益复杂&#xff0c;…

[Abp vNext 源码分析] - 19. 多租户

一、简介ABP vNext 原生支持多租户体系&#xff0c;可以让开发人员快速地基于框架开发 SaaS 系统。ABP vNext 实现多租户的思路也非常简单&#xff0c;通过一个 TenantId 来分割各个租户的数据&#xff0c;并且在查询的时候使用统一的全局过滤器(类似于软删除)来筛选数据。关于…

HTMLCSS 超简单的前端设计入门-2!

文章目录图片元素img元素和a元素连用和map元素和figure元素多媒体元素videoaudio列表元素有序列表无序列表定义列表容器元素div元素语义化容器元素元素包含关系为网页添加样式CSS术语解释选择器声明块CSS代码书写位置常见样式声明选择器简单选择器选择器的组合选择器的并列层叠…

八数码问题I-bfs和map标记

解题思路&#xff1a; bfs&#xff0c;将棋盘转化成一个整数表示其状态&#xff0c;比如我们到到达的状态是815736402&#xff0c;而样例给的输入状态是264137058&#xff0c;因为这些整数过大&#xff0c;标记数组开不下&#xff0c;所以可以用map来代替数组&#xff0c;写得时…

一个迷你ASP.NET Core框架的实现(下)

【框架内幕】| 作者 / Edison Zhou这是恰童鞋骚年的第196篇原创文章上一篇我们了解了AspNetCore.Mini这个项目的背景及项目结构和流程&#xff0c;这一篇我们继续解析几个核心对象。本文整理自A大&#xff08;蒋金楠&#xff09;的主题分享&#xff0c;点击本文底部“阅读原文”…

CoreJava 笔记总结-第七章 异常,断言和日志

文章目录第七章 异常,断言和日志处理错误异常的分类声明检查型异常如何抛出异常创建异常类捕获异常捕获单个异常捕获多个异常再次抛出异常和异常链finally子句try-with-Resource语句分析堆栈轨迹元素使用异常的技巧使用断言使用断言完成参数检查日志基本日志高级日志调试技巧第…