Java基础 之一 基本知识

Java基础 之一 基本知识

1.数据类型

Java有8种基本数据类型	int、short 、long、byte、float、double、char、boolean

先说明以下单位之间的关系

1位 = 1bit 	1字节=8位=8bit	1字=2字节=16位=16bit

1) 整形 表示没有小数部分 包括4种数据类型

  • int 4字节

  • short 2字节

  • long 8字节

  • byte 1字节

长整型数值后有一个L或l,如400L;

十六进制数值有一个前缀0x或者0X,如0xCAFE

二进制加上前缀 0b或0B,如0b1001是9

2) 浮点类型

  • float 4字节
  • double 8字节
double的精度是是float的两倍

float类型的数值有一个后缀F或者f,如3.14F	没有f的浮点数默认为double类型

也可以在浮点数后加后缀D或者d

溢出或者出错情况如下

  • 正无穷大 如正数/0
  • 负无穷大
  • NaN(not a number) 如0/0 -2的平方根

3) char类型

char类型的字面量要用单引号括起来。

如:'A'是编码值为65所对应的字符常量。它与"A"不同,"A"是包含一个字符A的字符串。

char类型的值还可以表示为十六进制,范围从\u0000-\Uffff;如\u03c0表示希腊字母Π

4) boolean 类型 false 和 true

2.变量

1) 变量

变量名必须由字母开头并由"字母"或者"数字"构成的序列。

Java的"字母"包括'A'-'Z'、'a'-'z'、'_'、'$' 或者在某种语言中表示字母的任何Unicode字符
"数字"包括'0'-'9'和在某种语言中表示数字的任何Unicode字符

2) 常量

用关键字final修饰	如 final double	CM_PER_INCH = 2.54

final修饰的变量只能被赋值一次,一但赋值就不能再改,习惯上常量名用大写。

3) 运算符、运算符、字符串

+-*/ 表示 加减乘除 若参与/的操作数都是整数则表示整数除法,否则表示浮点除法

%	取余操作

需要注意正数呗0除会产生异常,浮点数被0除会得到无穷大或者NaN的结果

数学函数求平方根	Math.sqrt(x);	求幂运算Math.pow(x,a) 是x的a次方;

+= -= ++ --

==:
a.数值类型 比值
b.引用类型 比地址

equals:比值

!=	&&	||

x<y?x:y

位运算符
& and	| or	^ 异或	~ not	

4) 数值类型之间的转换

两个数进行运算,低精度的自动转换为高精度

如果高精度的转换为低精度的会丢失一些信息,需要强制类型转换。 
double x = 3.05;
int a = (int)x;

5) 枚举类型

enum Size{SMALL,MEDIUM,LARGE,EXTRA_LARGE}

6) 字符串

Java类库中提供的一个预定义类 String	用双引号括起来
String str = "abcdefg"

1.字串
Sting s = str.substring(0,3);	//就是abc 第二个参数是不想被复制的第一个位置

2.拼接
a.直接用+	a+b
b.多个字符串放在一起,用一个定界符分隔,可以用静态join
String.join("-",Stringarray); 
或者String.join("-","S","M","L","XL");

3.Java的String类型是不可变的,最多将引用指向另一个字符串

4.equals检测两个字符串是否相等
"a".equals(str)

5.空串""是长度为0的字符串	

6.String变量还可以存放null

7. str1.compareTo( str2 );
返回值是整型,它是先比较对应字符的大小(ASCII码顺序),如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值,如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一方结束。
如果参数字符串等于此字符串,则返回值 0;
如果此字符串小于字符串参数,则返回一个小于 0 的值;
如果此字符串大于字符串参数,则返回一个大于 0 的值

7)构建字符串

StringBuilder builder = new StringBuilder();
每次添加一部分内容
builder.append(ch);
builder.append(str);
在需要构建字符串的时候,调用toString
String myString = builder.toString()

3. 输入输出

1) 输入

Scanner in = new Scanner(System.in)
String name = in.nextLine();	//读取一行
in.next() //读取一个单词 以空白符作为分隔符
in.nextInt();	//读取一个整数
in.nextDouble();	//读取一个浮点数

2) 输出

System.out.println()	输出信息后追加一个换行
System.out.print()		输出之后不追加换行
System.out.printf()		格式化输出
    
如System.out.printf("%8.2f",x) 浮点数
%s 字符串
%d 十进制数

3) 文件的输入输出

//如果文件名包含反斜杠,加一个额外的反斜杠 "c:\\mydirectory\\myfile.txt"
Scanner in = new Scanner(Path.get("myfile.txt"),"UTF-8")

//如果文件不存在,创建改文件
PrintWriter out = new PrinterWriter("myfile.txt","UTF-8")

4.控制流程

1) 块作用域

public static main(String[] args){
    int n;
    ...
    //块由一对大括号括起来
    {	
        int k;	
        int n;	//不能在嵌套的块中(函数可以看作一种块)定义同名变量
    }
}

2) 条件语句

if(){
    ...
}else if(){
    ...
}else{
    ...
}

3) 循环语句&switch

whiel(){
    
}
---------------
do{
    
}while()
---------------
for(int i;i<length;i++){
    
}
---------------
//list是数组或者集合
for(Object obj:list){
    
}
---------------
//多重选择
switch(choice){
    case "a":
        ...
        break;
    case "b":
        ...
        break;
    case "c":
        ...
        break;
     case "d":
        ...
        break;     
     case "e":
        ...
        break;    
     default:
        ...
        break;        
}
  1. 循环中断
while(a<=100){
    ...
   if(...) break;
}

带标签的break

flag:	//标签,必须放在希望跳出的最外层循环之前,并且紧跟一个冒号
while(a<=100){
    ...
  while(){
      if(...) 
       break flag;	//如果为false,跳转到带标签的语句块末尾,跳出所有循环之外
  }
   
}

5.大数值

//java.math包中的两个很有用的类:BigInteger和BigDecimal

//使用valueOf方法可以将普通数值转换为大数值
BigInteger a = BigInteger.valueOf(100);

//不能使用+ - * /处理大数值
BigInteger c = a.add(b);
BigInteger d = c.multiply(b.add(BigInteger.valueOf(2)));	//d = c*(b+2)
subtract()	//大数值差
divide()	//大数值商

6.数组

1) 定义一个数组

int[] a = new int[100];
int[] a = new int[]{1,2,3};	//元素个数和大括号不能同时写
//或者 
int a[] = new int[100];
//创建一个数字数组,所有元素初始化为0,boolean数组的元素会初始化为false

String[] str = new String[10];	//所有字符串初始化为null

array.length代表数组长度

2) for each

int[] a;
for(int element:a){
    ...
}

3) 数组初始化 匿名数组

//初始化数组
int[] a = {2,4,6,8,13,16};
//匿名数组
new int[]{20,24,36,48,63,76};
//重新初始化a
a = new int[]{20,24,36,48,63,76};

//相当于下面的简写
int[] anonymous = {20,24,36,48,63,76};
a = anonymous;

//注意,Java允许数组长度为0
new int[0];

4) 数组拷贝

int[] a = {1,3,5,7,9};
int[] b = a;	//此时a,b 指向同一数组
b[0] = 99;	//此时a[0],b[0]都变成99

//如果下把a的值拷贝到新的数组中
int[] b = Arrays.copyOf(a,a.length);

5) 数组排序等

int[] a = new int[1000];
Array.sort(a);	//排序

a.toString();	//返回a中元素的字符串	

6) 多维数组

//二维数组
int[][] array ={
    {0,1,2,3},
    {4,5,6,7},
    {8,9,10,11},
    {12,13,14,15}
}

//不规则数组
1
1 2 
1 2 3
1 2 3 4
int[][] array = new int[4][];
for(int i=0;i<4;i++){
    array[i] = new int[i+1];	
}
posted @ 2020-11-12 16:53  半泽直树  阅读(118)  评论(0)    收藏  举报