Java基础语法

来源:互联网 发布:sublime text3下载mac 编辑:程序博客网 时间:2024/06/06 01:30

代码规范

1:

  • 注意换行。
  • 变量的声明尽量是每一个变量独占一行,即使变量的类型是一样的,方便变量注释。
  • 关键字之间只认一个空格。
  • 不要使用技术性很高,难懂,易混淆的语句,方便日后的二次开发,和别人的维护。
  • 注意编写代码的符号一定要使用英文的符号,即半角符号。

2:

注释是个好东西,重要性不必说了。

注释内的东西不被编译。

// 单行注释/*  多行注释 *//** *这里是文档注释*/

我们所看到的api其实就是有文档注释自动生成的。

基本数据类型

整数类型

  • byte 1字节
  • short 2字节
  • int 4字节
  • long 8字节
//创建整型变量byte a=12;byte a=12, b=-13;//创建long类型的整型变量long a=165415312L;long a=123L;long c=123L + 1565L;//创建long类型的时候和其他的有点不一样,需要在数值后面加上 L 或者是 l ,否则可能会造成精度的丢失。

在Java中一个整数有默认类型(int)

//十进制赋值int a= 33;//八进制赋值int b=033;//十六进制int c= 0X33;

浮点类型

  • float 4字节
  • double 8字节
// 创建浮点类型变量//浮点数的默认类型为 double 类型float a=1.1F;float b=-2.4F;//在小数的末尾需要加 F 或者是 f 后缀double a=3.141592653;double b=3.14159265253D;//这里呢,double的类型可以加上后缀 D 或者 d,或者不加,原因是浮点数的默认类型为double 

Java中的浮点值是近似值,非常不准确

例如:

double a = 4.35 *100;System.out.println(a);

结果是

434.99999999999994
这个怎么解决呢?
这就要使用一个方法

double a = 4.35 * 100;System.out.println(Math.round(a));

这时输出置就是:

435

再例如:

double a = 0.1;double b = 2.0 - 1.9;System.out.println(a == b);

按照我们所理解的应该是true
但机器的运行结果是:

false
怎么来解决呢?
我们可以使用最小数对比法
可以和 1e-6 来相比较,如果是小于,我们就视为0,反之亦反。这个最先是C语言中用来判断是否为零的

double a = 0.1;double b = 2.0 -1.9;System.out.println(Math.abs(a-b)<1e-6);// Math.abs() 方法被用来取绝对值

答案是:

true

字符类型
用单引号包含的的可打印的单个符号。

'a', 'M', '8', '#', '文', ' '//以上都是字符,以下不是"A"  //不是一个字符,因为是用 双引号扩起来的'8'  != 8 //左边为字符,右边为整型常量

这两个8是不一样的

System.out.println('8'*2);  // 字符编码 *2System.out.println(8*2);    //数值 *2

输出结果是:

112
16

**char 的使用同C语言,不仅可以用来存字符,还可以用来存整数(即为字符编码),但是Java中的char采用了更高级的Unicode编码,取值范围为
0~65536**

例如:

//以字符来赋值char a1 = 'a';char b1 = '汉';char c1 = '2';System.out.println(a1);System.out.println(a2);System.out.println(a3);//以字符编码来赋值char a2 = 97;char b2 = 27721;char c2 = 50;System.out.println(a2);System.out.println(b2);System.out.println(c2);

运行结果是:

a

2
a

2

转义字符:

\'      //单引号字符\"      //双引号字符\\      //反斜杠字符\t      //垂直制表符,将光标移动到下一个制表符的位置\r      //回车\n      //换行\b      //退格  \f      //换页//示例:System.out.ptintln("[\101]");//这里的‘\’表示以八进制赋值,101转换为十进制就是65,所以输出的是 ‘A’

布尔类型

使用关键字: boolean 创建

这个类型只有两个值:true false

关系运算符

运算结果是一个布尔值

同C语言一样,不能够串联使用关系运算符
例如:

a < b

数据类型转换

勿以小杯乘大物

小转大:

  • 隐式转换(自动转换)
    这是自动转换的顺序图:
    这里写图片描述

低精度自动向高精度转换:
低精度类型的值可以直接赋给高精度类型:
这里写图片描述

byte a = 8;System.out.println(a);int b= a;System.out.println(b);long c =b; System.out.println(c);double d = c;System.out.println(d);//charchar e = 'A';int x = e-2;//运行结果是:63//这说明两者是相互兼容的
  • 显式转换(强制转换)

可适用于引用的类型:

(类型名)要转换的值

示例:

int a = 100;byte b = (byte)a;

大转小

只能使用强制转换,还可能造成细节丢失

double x = 3.1415926;float f = (float)x;System.out.println(f);int i = (int)x; //直接舍弃掉小数System.out.println(i);//这些都是要丢失的

自增自减运算符

  • 前置形式
 ++a;  // 先加1再使用 --b;  //先减1再使用
  • 后置运算
a++; //先使用,再加1b--;  //先使用,再减1

注意:

(a+b)++; --(x+y); //这种写法是错误的,诸如此类都是错误的//只能够给一个变量适用

三元运算符

返回值 = 判断公式 ? 结果1 : 结果2;

int a = 1;int b = a < 3 ? 20 : 30;

结果是:

20

注意:这个运算符是有返回值得,这个返回值是不能够丢失的。

位运算符

  • 位逻辑运算符

这里写图片描述

逻辑运算符运算结果:

这里写图片描述

总结:
与:同真为真
或:有真为真
异或:相同为假,不同为真
取反:真为假,假为真

注意:运算的时候要转换成二进制!

  • 位移运算符

这里写图片描述

int x = 64;int y = 32;// 位移之后是不对原变量的值产生影响// x<<1;  这种写法是错误的。x = x << 1;     //左移一位, 值乘以2System.out.println(x);//注意:下面的值分别是:8, 256System.out.println(y>>2);System.out.println(y<<3);
//int x = 32;x = x <<<2;x = x>>>3;//无符号位移

预算符的优先级

直接来图爽快

这里写图片描述

来了图,看了还是一脸的茫然,那就来点小题:

这里写图片描述

总结:

单目高于双目
按照运算符的作用来看,()这种级别最高,之后依次是算数运算符,位运算符,关系运算符,逻辑运算符,赋值运算符。

逻辑运算符

还是直接来图:

这里写图片描述

1 0