Java SE之基本程序设计结构
0.注释
1.基本数据类型(有且仅有8个):
1.1 整型:int,short,long,byte(表示一个字节,[-128,127])
1.2 字符型:char
1.3 浮点型:float,double
1.4 布尔型:boolean
1.5 注:String(属于引用类型),不属于基本数据类型。
数据类型有(3种):基本数据类型,枚举类型,引用类型(Reference Type)
2.运算符:++,--,+,-,*,/,[],(),<<,>>,?: .etc
2.1 严格的浮点运算结果:在该方法的修饰符中加上关键字strictfp(Eg:public static strictfp main(String [] args))
3.变量
3.1 变量
3.2 常量(final)
3.2.0 含义:表示这个变量只能被赋值一次。(类比C++的const)
3.2.1 修饰符:final;常量名规范:一般地,大写
3.2.2 类常量(修饰符:static final 变量):可以使该变量成为在一个类的多个方法中使用的常量
3.2.3 Java暂时保留 const关键字。
4.1 String类:
4.0 概念:
4.0.1.String是final类,不可以被继承。
String不属于基本数据类型。
4.1.1 子串
4.1.2 拼接
4.1.3 不可变字串:
只读字符串。(final决定)
String类没有提供用于修改字符串的方法。
优点:不可变字符串可以让字符串共享。
各种字符串存放在公共的存储池中。
字符串变量指向存储池相应的位置。(类似于 char*指针)
(注意:Eg:greeting = greeting.substring(0,3)+"p!" 的物理变化过程所产生的空间浪费和低下的效率)
4.1.4 检验字符串是否相等
0.原因:一定不能使用==运算符检测两个字符串是否相等!这个运算符只能确定两个字符串是否放在同一个位置。当然,如果字符串放置在同一位置上,它们必然相等。但是,它们完全有可能将内容相等的多个字符串的拷贝放置在不同的位置上。
注:实际上,只有字符串常量是共享的,而+或substring等操作产生的结果并不是共享的。
1.方法:equals(),equalsIgnoreCase(), compareTo() .etc
2.String str1 = "hello";
String str2 = "he" + new String("llo");
System.err.println(str1 == str2);
答案:false
解析:因为 str2 中的 llo 是新申请的内存块,而 == 判断的是对象的地址而非值,所以不一样。如果是String str2 = str1,那么就是 true 了。
4.1.5 空串("")与Null串
4.1.6 代码点与代码单元
1)方法(java.lang.string):
length(),
charAt(var),
equals(var),
indexOf(var),
replace(args,args),
trim(),
substring(---)
toLowerCase(),
toUpperCase() .etc
2)注释:类似于C/C++,Java字符串的代码单元和代码点从0开始计数。
4.1.7String与字符串的区别:【见】
4.2 StringBuild类(jdk 1.5)/StringBuffer类
4.2.1 弥补和提高String类的空间效率和时间效率
4.2.2 方法(java.lang.StringBuilder):
stringbuilder.append(str);
stringbuilder.append(char);
String completeString = builder.toString();
4.2.3 StringBuilder与StringBuffer的区别:
0)StringBuilder与StringBuffer的API均相同
1)StringBuilder类的前身就是StringBuffer类,StringBuilder类的效率高于StringBuffer类
2)StringBuffer允许采用多线程的方式执行添加/删除字符的操作。
StringBuilder支持所有字符串在一个单线程中编辑(一般地)
(因:StringBuilder的所有方面都没有被 synchronized(同步的) 修饰)
参考文档:【String s=new String("abc")创建了几个对象?】http://www.cnblogs.com/ydpvictor/archive/2012/09/09/2677260.html;
5.1读取输入
Scanner in = new Scanner(System.in)
Scanner in = new Scanner(Paths.get("file.txt")) (文件的输入输出)
next():输入行不包含空格
hasNext()
nextInt()读取整形 .etc
Scanner类不适合从控制台读取密码:
0.java.lang.System: static Console console()
1.(Console cons = System.console();)
2.java.io.Console:readPassword();readLine()
5.2格式化输出
1.printf() 与%字符的结合:
d 十进制整数
s 字符串
f 定点浮点数
%百分号
tx 日期【x为日期和时间的转换符(见 Java核心技术卷I Page:58)】 .etc
Eg:System.out.printf("姓名:%d",name)
2.Formattable接口
方法:formatTo();toString()
3.创建一个格式化的字符串(静态方法 String.format()):
String message = String.format("你好呀,今天是:%tx",date)
4.Format类,DecimalFormat类.etc
6.大数值:
6.1 BigInterger 实现任意精度的整数运算(Java.math.BigInterger)
6.2 BigDecimal 实现任意精度的浮点运算 (Java.math.BigDecimal)
7.数组
7.0参考文档:
Java数组(初学者必看)http://www.importnew.com/7127.html
7.1性质:
1)数组被作为Java对象,通过new创建。
2)获取数组容量:Arrays.length()可得数组长度
3)数组存储在Java堆的连续内存空间
4)数组一个固定长度的数据结构
5)你可以通过使用[]操作符访问数组元素
6)如果没有明确的初始化数组元素,那么数组就会用默认的类型值初始化
7)数组可以轻易的转换成ArrayList
8)通过java.utils.Arrays类去操作数组,通过使用Arrays你可以排序数组,可以做二分搜索。
9)java.lang.System.arrayCopy()提供了实用方法拷贝元素到另一个数组。
10)支持多维数组
int[][] multiArray = new int[2][3]
int[][] multiArray = {{1,2,3},{10,20,30}};
7.3数组创建方式:
int Arrs0[] = {3,5,66,9,4,5};
int[] intArray1; //creating array without initializing or specifying size
(可以读int[] Var为int数组 Var,更容易理解其语法)
Java SE之基本程序设计结构的更多相关文章
- JAVA核心技术I---JAVA基本程序设计结构
一:讨论一个简单的Java程序 package hello; public class Hello { /** * @param args */ public static void main(Str ...
- Java核心技术卷一基础知识-第3章-Java的基本程序设计结构-读书笔记
第3章 Java的基本程序设计结构 本章内容: 一个简单的Java应用程序 字符串 注释 输入输出 数据类型 控制流 变量 大数值 运算符 数组 本章主要讲述程序设计相关的基本概念(如数据类型.分支以 ...
- 7.20实习培训日志-Java基础程序设计结构
Java基础程序设计结构 在 Math 类中,为了达到最快的性能,所有的方法都使用计算机浮点单元中的例程,如果得到一个完全可预测的结果比运行速度更重要的话,那么就应该使用StrictMath类,它使用 ...
- 重新学习Java——Java基本的程序设计结构(二)
上一节简单回顾了Java基本的一些程序设计的知识,这一节将继续根据<Java核心技术>这本书,进行这方面知识的复习与探索. 1. 字符串 Java字符串实际上就是Unicode字符序列.例 ...
- Java核心技术卷阅读随笔--第3章【Java 的基本程序设计结构】
Java 的基本程序设计结构 现在, 假定已经成功地安装了 JDK,并且能够运行第 2 章中给出的示例程序.我们从现在开始将介绍 Java 应用程序设计.本章主要介绍程序设计的基本概念(如数据类型.分 ...
- 201771010142 张燕 Java的基本程序设计结构第二周学习总结
第三章 Java的基本程序设计结构 第一部分 理论知识学习部分 一 基本知识: 1.标识符:由字母.下划线,美元符号和数字组成,第一个符号不能为数字,可以用作类名.变量名.方法名.数组名和文件名等. ...
- 1-03 Java的基本程序设计结构
1-03 Java的基本程序设计结构 3.1 & 3.2 在一个单词中间使用大写字母的方式称为骆驼命名法.以其自身为例,应该写成CamelCase). 与C/C++一样,关键字void表示这个 ...
- JavaSE&&JavaEE&&JavaME的区别【Java中常用的包结构】
一.javaEEJavaSEJavaME用的同一个jar包吗? javaEE JavaSE javaME 用的JDK是同一个,开发j2SE工程的话只要有JDK就可以了,开发J2EE工程和J2ME工程除 ...
- Java虚拟机(一)结构原理与运行时数据区域
我们来学习Java虚拟机的结构原理与运行时数据区域. 1.Java虚拟机概述 Oracle官方定义的Java技术体系主要包括以下几个部分: Java程序设计语言 各种平台的Java虚拟机 Class文 ...
随机推荐
- 【转】Thread Local的正确原理与适用场景
本文转发自技术世界,原文链接 http://www.jasongj.com/java/threadlocal/ ThreadLocal解决什么问题 由于 ThreadLocal 支持范型,如 Thre ...
- BZOJ3932[CQOI2015]任务查询系统——主席树
题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第E ...
- UVALive5876-Writings on the Wall-KMP
有两段字符串,第一段的尾和第二段的头可能重合.问有多少种组合的可能. 需要理解一下next数组的意义. #include <cstdio> #include <cstring> ...
- MT【64】2017联赛一试不等式的一个加强练习
已知$x_1,x_2,x_3\ge0,x_1+x_2+x_3=1$求 $$(x_1+3x_2+5x_3)(x_1+\frac{1}{3}x_2+\frac{1}{5}x_3)(x_1+x_3+3x_2 ...
- 【HDU5778】abs(数学)
BUPT2017 wintertraining(16) #4 C HDU - 5778 题意 给定x,找出使|y-x|最小,且每个质因子都出现两次的y(\(y\le 2\))50组测试数据,\(1\l ...
- 自学Aruba7.3-Aruba安全认证-802.1x认证(web页面配置)
点击返回:自学Aruba之路 自学Aruba7.3-Aruba安全认证-802.1x认证(web页面配置) 步骤1 建立AP Group,命名为test802-group 步骤2 将AP加入到AP ...
- 【BZOJ2245】[SDOI2011]工作安排(费用流)
[BZOJ2245][SDOI2011]工作安排(费用流) 题面 BZOJ 洛谷 题解 裸的费用流吧. 不需要拆点,只需要连边就好了,保证了\(W_j<W_{j+1}\). #include&l ...
- 【转】ls 命令的 20 个实用范例
Linux中一个基本命令是ls.没有这个命令,我们会在浏览目录条目时会遇到困难.这个命令必须被每个学习Linux的人知道. ls是什么 ls命令用于列出文件和目录.默认上,他会列出当前目录的内容.带上 ...
- hdu3506 Monkey Party (区间dp+四边形不等式优化)
题意:给n堆石子,每次合并相邻两堆,花费是这两堆的石子个数之和(1和n相邻),求全部合并,最小总花费 若不要求相邻,可以贪心地合并最小的两堆.然而要求相邻就有反例 为了方便,我们可以把n个数再复制一遍 ...
- Java -- JDBC_DAO 设计模式
DAO:Date Access Object 实现代码模块化,更加有利于代码的维护和升级. DAO 可以被子类继承或者直接使用. 访问数据信息的类,包含对数据的CRUD(create read upd ...