java中 ucafe_Java基础 之一 基本知识

Java基础 之一 基本知识

1.数据类型

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

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

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

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

int4字节

short2字节

long8字节

byte1字节

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

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

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

2) 浮点类型

float4字节

double8字节

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 doubleCM_PER_INCH = 2.54

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

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

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

%取余操作

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

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

+= -= ++ --

==:

a.数值类型 比值

b.引用类型 比地址

equals:比值

!=&&||

x

位运算符

& and| or^ 异或~ not

4) 数值类型之间的转换

4839ee0a8e4326bbf49721acc70a0727.png

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

如果高精度的转换为低精度的会丢失一些信息,需要强制类型转换。

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

}

---------------

//list是数组或者集合

for(Object obj:list){

}

---------------

//多重选择

switch(choice){

case "a":

...

break;

case "b":

...

break;

case "c":

...

break;

case "d":

...

break;

case "e":

...

break;

default:

...

break;

}

循环中断

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];

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值