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;//无符号位移
预算符的优先级
直接来图爽快
来了图,看了还是一脸的茫然,那就来点小题:
总结:
单目高于双目
按照运算符的作用来看,()这种级别最高,之后依次是算数运算符,位运算符,关系运算符,逻辑运算符,赋值运算符。
逻辑运算符
还是直接来图:
- [Java 基础]基础语法
- JAVA-Java基础语法
- Java基础:Java语法基础
- java基础:java语法基础
- JAVA基础.JAVA基础语法
- 【Java基础】Java基础语法
- java最基础语法
- java基础语法--标识符
- java基础语法--数据类型
- Java 基础语法篇
- Java基础语法
- Java的基础语法
- Java基础语法
- Java 语法基础
- java 基础语法
- java 基础语法总结
- 2. java 基础语法
- java语法基础
- 移动端简单的登录页面
- zoj3966 Domino Tiling dp
- 关于 vue.js 运行环境的搭建(mac)
- 欢迎使用CSDN-markdown编辑器
- dp经典问题 最长非降子序列
- Java基础语法
- 从ExtensionLoader看Dubbo插件化
- 为什么实体类要实现serializable接口 序列化
- java网络编程(一):基础知识
- Java如何复制对象
- Objective-C中Alloc和AllocWithZone
- c++ 引用
- opengles之修改已有纹理glTexSubImage2D函数用法
- ContentProvider