Java代码规范、基本类型和实例演练
1.代码分段
当一个方法内部的代码超过7行时,就要考虑分成段落。
使用空行分隔代码
按照代码的功能进行分段
最终效果是一眼就能在宏观上把握代码的结构
(1)举例 Card
分成2段
第一段:定义变量保存数据
第二段:打印数据,实现功能
(2)分形
分形是自然界和人类社会普遍存在的现象
分形的意思是整体结构和细节结构是相似的
如河流主干好、与它支流是相似的
如叶脉的主干和分支是相似的
人类社会公路网、互联网都是分形的
我们写的代码一样有分形结构
(3)Card实例分段后
上面是数据
下面是功能
在结构上,它与类的结构相似
Class 类名{
属性1;
属性2;
方法1{
}
方法2{
}
}
程序 = 输入 + 处理 + 输出
方法 = 输入 (传参) + 处理(方法内部的代码) + 输出(return)
二、关于基本类型
任何编程语言都需要基本类型
无论多么复杂的程序,无论多么复杂的类/对象,都是由基本类型组合而成的
1>表示整数的基本类型:
byte 1字节(8位) -128---127
short 2字节(16位) -32768---32767
int 4字节(32位) -21亿---21亿
long 8字节(64位) -2~63---2~63-1
2>表示字符的基本类型
char 2字节(16位) 0~65535
3>表示布尔值的基本类型
Boolean 1字节(8位) true,false
主要用来表示逻辑,主要与if/else配合使用
4>表示小数的基本类型
Float 4字节(32位) 精度比较差
Double 8字节(64位) 精度稍微高一点
由于2进制的限制,大多数小数都只能保存为近似值
5>基本类型的理解
基本类型的存储空间是固定不变的。
如果存储数据超过相应类型的字节数就会溢出,溢出后结果是错误的。
基本类型都在当前计算机的字长范围内,也就是计算的指令可以一次性处理它。
基本类型可以直接进CPU进行计算和暂存,没有必要时不会进内存,更不会进硬盘。
基本类型的处理速度是最快的。
基本类型通常都有配套的CPU指令
三、java是强类型编程语言
变量的类型不会变
(1)Java赋值规则:
兼容类型可以赋值
但字节变小时需要程序明确指出(所谓强制类型转换)
(2)JAVA字符串处理
字符串不能保存在CPU中,运行时通常会保存在内存中。
保存在内存中的类型都是引用类型:
其数据在内存中
CPU只是用一个地址(32位整数)来表示它在内存中的保存位置
(3)关于字符串类型为什么被设计成不可变的?
1>改变字符串的空间消耗比新创建一个所需要的空间还要大
如果改为链表实现,容易修改,但读写性能就会很差
2>字符串在内存中是紧密存储的,后面没有空间可以供修改使用
修改字符串通常要开辟新空间(而老字符串没变)
3>即使字符串后面有空间,字符串移位也很慢。
不移位就要使用链表,而链表前后指针比字符数据大至少4倍,会导致存储空间暴增,而且读取字符性能很差.
4>字符串的 + 拼接,每一次 + 都会产生新字符串,内存消耗比较大
尤其是循环时内部拼接字符串
(4)实例分析
//使用float表示小数,误差很容易出现,通常进行精确的计算时
//不使用float,比如计算钱的时候
float a = 0.1f;
float b =0.8f;
float c =a +b;
System.out.println(c);
//即使赋值为1,也不会改变a是float的类型
a=1;
//字符串类型无法转换成float,所以是不兼容类型
//无法赋值
//a = "abc";
//已经声明过的变量,不能再次声明
//这样就阻止了改变变量的类型
//String a="123";
//Java的这种强类型的性质是Java能够在商业上应用于大型项目的重要素质
//其他弱类型编程语言,虽然开发速度快,但无法开发大型项目
//弱类型编程语言:PHP、Node.js、Python
//强类型语言的优势:
//1.工具可以做的很强大
//(发现错误的能力、修复代码的能力、重构能力很强、代码自动生成、代码提示能力)
//2.对于程序员的约束比较好,能够实现很多设计思想
int i = 1;
//可以直接赋值
a =
i;
double d = 1.5;
//当存储空间变小时,不允许直接赋值
//编译器为了安全会要求程序【明确】赋值
//a = d;
a = (float)d;//强制转换
四、Java中常用的格式字符串
String.format() 字符串格式化
%s 字符串,通用,通用机制
%c char
%n 换行(\n)
%d 整数
%05d 不足5位前面补0
% 5d 不足5位前面补空格
%-5d 不足5位后面补空格
%x 十六进制
%o 八进制
%f 浮点数,数字格式化
%,f 在数字中插入,
%.5f 保留5位小数
%e 指数
%% 输出一个百分数符号
%b bool,true
注意直接使用:System.out.printf("格式字符串", 值, 值…);
Alt shift r 同时修改相同的单词除关键字外
五、Java运算符38个
六、Java运算符的优先级
七、小项目实练之购物计费
编程流程思路:输入单价和数量,如果输入有误,则重新输入。无误继续运行,输出本次消费累计结果。再进行选择继续清零、退出还是继续消费。清零将从0开始计算,退出则直接退出本次消费,继续消费则将所有的消费进行累计并输出。
源代码:
package com.zhiyou100;
import java.util.Scanner;
public class MyShop {
public static void main(String[]args) {
double price;
int number;
double total = 0;
System.out.println("你好!欢迎光临小卖部");
while (true) {
boolean error =true;
Scanner scanner = new Scanner(System.in);
while (error) {
try {
System.out.print("请输入单价:");
price =
scanner.nextDouble();
System.out.print("请输入数量:");
number =
scanner.nextInt();
total +=
price * number;
error =false;
} catch (Exception
e) {
System.out.println("输入有误,请重新输入!");
scanner.nextLine();
}
}
System.out.printf(String.format("本次消费累计结果:¥%.2f",total));
System.out.println();
System.out.println("清零请输入c,退出请输入q,按任意键继续");
scanner.nextLine();
String choice =
scanner.nextLine();
if (choice.equals("c")) {
total = 0;
} else if (choice.equals("q")) {
System.out.println("本次计费结束");
break;
}
}
}
}
八、小项目实练之猜数字游戏
编程思路图:
运行结果:
源代码:
package com.zhiyou100;
import java.util.Random;
import java.util.Scanner;
public class MyGame {
public static void main(String[] args) {
int max = 100;
int min = 1;
int count = 0;
boolean value =true;
while(value) {
int trueKey = (int)(Math.random()*max+min);
int userKey =0;
while(true) {
System.out.println("相信学习的力量 相信奋斗的力量");
System.out.printf(String.format("我在心里想了一个数,它在%s~%s之间,看看你能几次猜中?",min,max));
System.out.println();
Scanner scanner = new Scanner(System.in);
boolean error = true
while(error) {
try {
System.out.print("你猜:");
userKey = scanner.nextInt();
System.out.println(); count++;
if (trueKey>userKey) {
System.out.println("你猜的数字太小了!");
}else if(trueKey<userKey) {
System.out.println("你猜的数字太大了!");
}else {
System.out.printf(String.format("恭喜你,你猜对了!你一共猜了%d次",count));
error=false;
}
} catch (Exception e) {
System.out.print("你輸入有誤,請重新輸入!");scanner.nextLine();
}
}
break;
}
System.out.println("退出请输入 q,再玩一次请回车");
Scanner scanner2 = new Scanner(System.in);
String shuRu = scanner2.nextLine();
if (shuRu.equals("q")) {
value =false;
System.out.println("nihao");
}
}
System.out.println("游戏结束");
}
}
九、Java输入易错区
问题:Scanner对象输入时,方法nextLine()会清空回车键。如果前面输入调用的方法非nextLine(),例如nextInt(),nextDouble()等方法;则不会扫描到末尾敲的回车,导致缓冲区遗留了回车键,后面调用nextLine()时读取这个遗留的回车,扫描到回车后这次输入直接结束,而没有输入内容,类似于跳过。方法nextLine()的会读取缓冲区剩余的部分,如果缓冲区有剩余内容就会直接读取输出。
解决方法:在调用nextInt(),next(),nextDouble()等方法后,后面要先写一个scanner.nextLine();来扫描清空掉这个回车,再使用nextLine()来输入。
实例演示:本例中price是int类型,输入一个整型按回车符后,后面定义为String类型的test则直接读取了这个回车符,而直接结束了,因此需要添加一条语句。
Scanner scanner = new Scanner(System.in);
int price =scanner.nextInt();
//添加的语句:scanner.nextLine();
String test =scanner.nextLine();
Java代码规范、基本类型和实例演练的更多相关文章
- C/C++、C#、JAVA(二):基本类型和转换操作
基本类型和转换操作 数据类型 C语言中的基本类型如下. 类型 存储大小 值范围 char 1 字节 -128 到 127 或 0 到 255 unsigned char 1 字节 0 到 255 si ...
- Java代码规范
Java代码规范 本Java代码规范以SUN的标准Java代码规范为基础,为适应我们公司的实际需要,可能会做一些修改.本文档中没有说明的地方,请参看SUN Java标准代码规范.如果两边有冲突,以SU ...
- JAVA代码规范笔记(上)
本文为<code conventions-150003>(JAVA代码规范)笔记. 文件组织 1.超过2000行代码的源文件将会比较难以阅读,应该避免. 2.每个Java源文件都包含单一的 ...
- Java中的基本类型和包装类型区别
首先看一下几个测试题,验证一下java中对基本类型和包装类型的理解,看看最后输出的答案对不对,答案在这篇博客中哦: // 第一题: 基本类型和包装类型 int a = 100; Integer b = ...
- 转!!Java代码规范、格式化和checkstyle检查配置文档
为便于规范各位开发人员代码.提高代码质量,研发中心需要启动代码评审机制.为了加快代码评审的速度,减少不必要的时间,可以加入一些代码评审的静态检查工具,另外需要为研发中心配置统一的编码模板和代码格式化模 ...
- 【转】Java代码规范
[转]Java代码规范 http://blog.csdn.net/huaishu/article/details/26725539
- Java代码规范、格式化和checkstyle检查配置文档
http://www.blogjava.net/amigoxie/archive/2014/05/31/414287.html 文件下载: http://files.cnblogs.com/files ...
- 阿里官方Java代码规范标准《阿里巴巴Java开发手册 终极版 v1.3.0》
终极版 v1.3.0 2017年开春之际,阿里诚意献上重磅大礼:<阿里巴巴Java开发手册>,首次公开阿里官方Java代码规范标准.这套Java统一规范标准将有助于提高行业编码规范化水平, ...
- MyEclipse中阿里JAVA代码规范插件(P3C)的安装及使用
JAVA代码规范插件(P3C)是阿里巴巴2017年10月14日在杭州云栖大会上首发的,使之前的阿里巴巴JAVA开发手册正式以插件形式公开走向业界.插件的相关信息及安装包都可以在GitHub(https ...
随机推荐
- python pip的安装流程,以及使用pip更新,卸载第三方模块
在Python的学习过程中,肯定会遇到很多安装模块的地方,可以使用easy_install安装,但是easy_install相对于pip而言,最大的缺陷就是它所安装的模块是不能够卸载的,其他功能是和p ...
- win32之取画刷的方法
取画刷(HBRUSH) 的六种方法2009-- :00HBRUSH hbr; 第一种: hbr= CreateSolidBrush(RGB(,,)); //单色的画刷 第二种: hbr= (HBRUS ...
- django admin 或xadmin 错误 总结
django管理界面admin搜索报错:TypeError: Related Field got invalid lookup: icontains 报错 TypeError: Related Fie ...
- FreeRTOS官方翻译文档——第二章 队列管理
2.1 概览基于 FreeRTOS 的应用程序由一组独立的任务构成——每个任务都是具有独立权限的小程序.这些独立的任务之间很可能会通过相互通信以提供有用的系统功能.FreeRTOS 中所有的通信与同步 ...
- selenium测试环境搭建(一)
selenium测试环境搭建 下载资源 1. selenium-java-2.53.0.zip 下载地址:http://pan.baidu.com/s/1dFDf27Z 2. Firefox Set ...
- 程序生成word与PDF文档的方法(python)
程序导出word文档的方法 将web/html内容导出为world文档,再java中有很多解决方案,比如使用Jacob.Apache POI.Java2Word.iText等各种方式,以及使用free ...
- 【BZOJ】1689: [Usaco2005 Open] Muddy roads 泥泞的路(贪心)
http://www.lydsy.com/JudgeOnline/problem.php?id=1689 一开始我也想到了贪心,,,策略是如果两个连续的水池的距离小于l的话,那么就将他们链接起来,,, ...
- ES 中的 POST 和 PUT 的区别
0.什么是Restful架构 比较难说清楚,这部分大雾状态,引ruanyf 理解RESTful架构 的几句总结吧: Fielding将他对互联网软件的架构原则,定名为REST,即Representat ...
- 修改Android 界面颜色
btnGetCode.setTextColor(getResources().getColor(R.color.dark_white)); Color.parseColor("#1a71d4 ...
- 【转】关于OnPaint的工作机制
转载出处:http://blog.csdn.net/foreverhuylee/article/details/21889025 用了两年的VC++,其实对OnPaint的工作原理一直都是一知半解.这 ...