JavaSE学习(一)---基础知识

1.数据类型

类型存储空间取值范围
int4字节-~+
short2字节
long8字节
byte1字节
float4字节
double8字节
char2字节
boolean1位true/false

在Java中,整型范围与运行的Java代码的机器无关。解决了软件从一个平台移植到另一个平台,或在不同操作系统之间移植带来的诸多问题。与此相反,C和C++需要针对不同的处理器选择最为高效的整型,在不同处理器下的存储空间是不一样的。由于Java程序必须保证在所有机器上运行得到相同的结果,所以Java的各种数据类型取值范围必须固定。注意,Java没有无符号形式unsigned的数据类型。

注意浮点数有舍入误差,原因是浮点数采用二进制系统表示,二进制系统无法精确地表示1/10。这就好像十进制无法精确表示分数1/3一样。如果计算中不允许有任何舍入误差,就应该使用BigDecimal(大数)类。

转义序列名称Unicode值
\b退格\u0008
\t制表\u0009
\n换行\u000a
\r回车\u000d
"双引号\u0022
单引号\u0027
\ \反斜杠\u005c

注意:注释中的\u容易引发错误

Unicode打破了传统字符编码机制的限制。在其出现之前,有许多不同的标准:美国的ASCII、西欧语言中的ISO 8859-1、俄罗斯的KOI-8、中国的GB 18030BIG-5等。由于标准不一,不同的编码方案下就会对应不同的字母,还有编码长度可能不同。在20世纪80年代,开始设计了Unicode,当时认为2字节代码足以对全世界的所有字符进行编码,并且有足够的空间留给未来扩展。但是,由于汉语,日语等表意文字的引入,16位的char类型已经不够用了。(强烈建议不要在程序中使用char类型)

在C/C++中,值0相当于布尔值false,非0值相当于布尔值true;而在Java中不是这样!

2.变量

Java中的变量名必须以字母为开头,以字母或数字构成的序列。在这里“字母”和“数字”的表示范围更大。字母包括下划线_和在某种语言中表示字母的任何Unicode字符,数字也是如此。==空格,‘+’==这种字符不行,变量名中所有字符都有意义,且大小写敏感,长度无限制,但是取变量名还是要遵循一定规则,方便理解,阅读。另外,Java中变量的声明可以放在代码中任何地方。

2.1常量

Java中用关键字final指示常量,使用方法如下:

public class Contants
{
    static final BOX = 10;//希望某个常量可以在一个类中的多个方法使用,通过static final定义,成为类常量
    public static void main(String[] arg)
    {
        final double CM_PER_INCH = 2.54;
        double paperWidth = 8.5;
        double paperHeight = 11;
        System.out.println("Paper size in centimeters:"+paperWidth * CM_PER_INCH + "by" + paperHeight * CM_PER_INCH);
    }
}

3.字符串

标准Java类库中提供了预定义类String。当一个字符串和一个非字符串拼接时,后者被换成字符串。注意Java中的字符串和C++中的不一样,C++中可以将字符串看成一个字符型数组,而Java中不是如此!在Java中字符串的字符不能单个修改!可以修改字符串变量 让它引用另外一个字符串。Java字符串大致类似与char*指针,举个例子:

char* greeting = "Hello";
char* temp = malloc(6);
strncp(temp,greeting,3);
strncp(temp+3,"p!",3);
greeting = temp;

检测字符串是否相等不能用==,要用equals()函数,用s.equals(t)判断字符串st是否相等。

空字符串不等于Null串,空串是长度为0的字符串,Null串没有和任何对象关联,要检查是否为Null串用if(str==null)。注意:Null串不能调用String方法,会出错

码点与码点单元:待更新。。。

在线API文档查看:

Java中文版

官方版

4.输入输出

Scanner类在java.util.*包中。当时用的累不是定义在java.lang包中时,要用import导入进来。例如:

import java.util.*;

要想通过控制台输入,首先要构造一个Scanner对象,并与标准输入流System.in相关联。

Scanner in = new Scanner(System.in);
System.out.print("What's your name?");
String name = in.nextline();//这里调用方法按需求而定

Java SE 5.0 的格式化输出沿用了C语言的printf方法。例如:

System.out.printf("%8.2f",x);
//8:在输出中字符数最少为8,字符数少于8在整数部分前面加空格,多于8整数部分正常输出
//2:小数部分最多输出2个字符,多出的四舍五入

文件的输入输出:

Scanner in = new Scanner(Paths.get("myfile.txt","UTF-8"))
//文件路径要用双反斜杠,这里指定了读取文本的字符编码
PrintWriter out = new PrintWriter("myfile.txt","UTF-8");
//如果不存在文件,就创建文件,这里out能像System.out一样调用方法

5.数组

创建数组:

int[] a = new int[100];

创建一个数字数组,所有元素都初始化为0,boolean数组元素初始化为false。对象数组初始化为null。与C/C++一样,Java中数组创建之后,长度就不能改变了。

foe each循环在数组中的使用:

for (int element : a)
System.out.println(element):

数组初始化:

int[] small Primes = { 2, 3, 5, 7, 11, 13 };

数组拷贝:

int[] copiedLuckyNumbers = Arrays.copyOf(luckyNumbers , luckyNumbers .length);

注意:Java中[ ]运算符被预定义为检查数组边界,==没有指针运算,==不能通过a加1得到数组的下一个元素。*(a+1)

深拷贝与浅拷贝问题值传递还是引用传递。

命令行参数:

在使用main()方法时,都会用到String arg[],当一个Message类按照如下方式运行时:

java Message -g cruel world

args 数组将包含下列内容:

arg[0]:"-g"
arg[1]:"cruel"
arg[2]:"world"
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值