Java 笔记【第三章 Java 的基本程序设计结构】


3.1

  • Java 应用程序中的全部内容都必须放置在类中。

  • 命名规范: 类名是以大写字母开头的名词。如果名字由多个单词组成,每个单词的第一个字母都应该大写。[驼峰命名法]

  • 运行已编译的程序时,Java 虚拟机将从指定类中的main方法开始执行。

  • main 方法必须声明为public。 Java 中的所有函数都属于某一个类的方法, Java中的main方法必须有一个外壳类。如果main 方法正常退出,那么Java 应用程序的退出代码为0.

3.2 注释

  • /* */注释不能嵌套。

3.3 数据类型

  • 在Java中,有8种基本类型:4种整型, 2种浮点类型, 1种用于表示Unicode 编码的字符单元的字符类型 char, 一种用于表示真值的Boolean 类型。

  • Java中的整型范围与运行的Java代码的机器无关。各种数据类型的取值范围必须固定。

  • 长整型数值后缀 L 或 l, 十六进制数值有一个前缀 0x 或 0X, 八进制有一个前缀0, 前缀加上0b 或 0B 就可以写二进制数, float 后缀F 或 f, Double 后缀 D 或 d

  • Java没有任何无符号(unsigned) 形式的int、long、short、或byte类型。

  • 正无穷大 Double.POSITIVE_INFINITY, 负无穷大 Double.NEGATIVE_INFINITY 不是一个数字 Double.NaN

  • 不能这样检测一个特定值是否等于Double.NaN: if(x==Double.NaN) //is never true 因为所有“非数值”的值都认为是不相同的

  • 应该是 if(Double.isNaN(x))

  • char 类型原本用于表示单个字符,如今有些Unicode字符可以用一个char 值描述,另外一些Unicode 字符则需要两个char 值

  • Java 采用16位的Unicode字符集。一个char类型描述UTF-16编码的一个代码单元。

  • 在Java 中 赋值表达式(x=0)是不能转换成为布尔值的。而在C++ 中,赋值表达式是为true的。

3.4 变量

  • 逐一声明每一个变量可以提高程序的可读性。

  • 习惯上,将常量名使用全大写。可以使用static final 来设置一个类常量,便于被多个方法所引用。

3.5 运算符

  • 不同的处理器和寄存器的计算精度不同,会导致计算的结果精度不同。

  • strictfp 关键字标记的方法必须使用严格的浮点计算来生成可再生的结果。

  • 如果一个类标记为strictfp 那么这个类中的所有方法都要使用严格的浮点计算。

  • 采用默认的方式不会产生溢出,而采用严格的计算可能产生溢出。但其实,浮点溢出不属于大问题。

  • 数值类型之间的转换:
       对两个数值进行二元操作时:
         - 如果两个操作数有一个是Double,另一个也变
         - 同理float\long\int

       转换之后会有信息丢失:
         - int(4) -> float(4)
         - long(8) -> float(4)
         - long(8) -> double(8)
       总结:其实整型转为浮点基本都会有丢失信息的情况,除了int(4) -> double(8)

  • 舍入运算:Math,round(x) 返回的是long类型,得到最接近的整数。

  • boolean 不可以强制转换。只能 b?1:0

  • 移位运算符的右操作数要完成 %32 运算,(long下是64)1<<35 == 1<<3

字符串

  • 字符串变量指向存储池中相应的位置。如果复制一个字符串变量,原始字符串与复制的字符串共享相同的字符。

  • 一定不要用 == 运算符检测两个字符串是否相等。该运算符检测的是两个字符串是否放置在同一个位置上。判断相等应该使用str.compareTo()

  • 空串 != null 空串是长度为0的字符串。null是字符串的特殊值,表示目前没有任何对象与该变量相关联。

  • 字符串构建器:StringBuilder 添加使用.append(str). 该类的前身是StringBuffer,其效率有些低,但允许采用多线程的方式执行添加或者删除。

关于字符串池可以参考字符串池

3.7 输入输出

  • 通过控制台进行输入:Scanner in = new Scanner(System.in);

  • 读取密码:

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

3.8 控制流程

  • 不能在嵌套的两个块中声明同名的变量。区别C++(会覆盖使用)

3.9 大数值

  • BigInteger 和 BigDecimal 可以处理包含任意长度数字序列的数值运算。前者为整型,后者为浮点型。

  • 不能使用 + - * / 来处理大数值。而需要使用类中的add 和 multiply 方法。

  • Java没有提供运算符重载功能。

数组

  • 初始化:数字数组,所有元素为0; Boolean 数组为false; 对象数组为null

  • 数组拷贝:int[] b = Arrays.copyOf(a, a.length);

  • 二分查找 binarySearch(type[] a, type v)

  • 数组元素设置为v fill(type[] a, type v)
  • 数组比较 equals(type[] a, type[] b)

  • foreach 循环二维数组

for(double[] row : a)
    for(double value : row)
        dosomething
  • 快速打印
    System.out.println(Arrays.deepToString(a));

这里科普一下编码的问题

  • Unicode 是一种业界标准,包括字符集,编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

  • Unicode当然是一个很大的集合,现在的规模可以容纳100多万个符号。需要注意的是,Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。

  • UTF-8 UTF-16 等则是字符集编码。

  • UTF-8等是Unicode 的实现方式。UTF是 Unicode/UCS Transformation Format,即把Unicode转做某种格式的意思。

  • UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。

  • UTF-16 字符用两个字节或四个字节表示
  • UTF-32 字符用四个字节表示

  • 编码规则(很好理解) 参考ray_here

具体介绍可以参考Co_yiqiu

  • 个人总结: 假设一个字符X,可以查表得知其Unicode, 然后根据其数值大小,判断使用多少字节来存储。之后将Unicode的数值变成01串,按照规则,从后往前填入字节中,不足补0.最后得到的便是UTF-8编码的二进制形式。

2018年2月7日16:46:15
– end –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
校园失物招领系统管理系统按照操作主体分为管理员和用户。管理员的功能包括字典管理、论坛管理、公告信息管理、失物招领管理、失物认领管理、寻物启示管理、寻物认领管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 校园失物招领系统管理系统可以提高校园失物招领系统信息管理问题的解决效率,优化校园失物招领系统信息处理流程,保证校园失物招领系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 ,管理员权限操作的功能包括管理公告,管理校园失物招领系统信息,包括失物招领管理,培训管理,寻物启事管理,薪资管理等,可以管理公告。 失物招领管理界面,管理员在失物招领管理界面中可以对界面中显示,可以对失物招领信息的失物招领状态进行查看,可以添加新的失物招领信息等。寻物启事管理界面,管理员在寻物启事管理界面中查看寻物启事种类信息,寻物启事描述信息,新增寻物启事信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值