java初识

java的HelloWorld

利用java打印helloWorld

public class HelloWorld {
    public static void mian(String[] args){
        System.out.println("HelloWorld");
    }
}

可以明显看出java,对于打印HelloWorld,java程序甚至比c语言还要繁琐

java中的常量

  • 整数
  • 小数
  • 字符
  • 字符串
  • 空常量 null

java中的变量

java中的变量分为两类

  • 基础数据类型
  • 引用数据类型
java中的基础数据类型
类型 关键字 占用字节 范围
字节型 byte 1 -128 ~ 127
短整型 short 2 -32768 ~ 32767
整型 int 4 -2^31 ~ (2^31-1)
长整型 long 8 -2^63 ~ (2^63-1)
单精度浮点数 float 4 -1.4013E-45 ~ 3.4028E+38
双精度浮点数 double 8 4.9E-324 ~ 1.7977E+308
字符型 char 2 0 ~ 65535
布尔型 boolean 1 true false
System.out.println("HelloWorld!");
// 定义byte byte占用1个字节8位 byte的范围是-128-127 数字超出该范围会报错
// Java的变量在定义的时候需要确定变量类型 并且不能重复定义 
// Java变量定义可以随用随时定义不用定义在函数开始
byte b1 = 100;
System.out.println(b1);

// 定义short short占用两个字节 16位 short变量的范围是-32768-32767
short s1 = 20000;
System.out.println(s1);

// 定义int类型 int类型时Java中的默认整数类型 占用4个字节 32位 范围是负2的31次方到正2的31次方减1
// int的范围是正负20亿左右
int i1 = 200000000;
System.out.println(i1);

// 定义long类型 long类型占用8个字节 范围是负2的63次方到正2的63次方减1
long l1 = 10000000000L; 
// 使用long类型的常数需要在数字后面加上L 
System.out.println(l1);

// 定义单精度float类型 float类型占用4位 内存中使用科学计数法表示一个小数 范围是1.4013E-45-3.4028E+38
float f1 = 1.8987F; 
// 使用单精度小数float需要在数字后面加上F
System.out.println(f1);

// 定义双精度类型double double类型占用8位 范围是4.9E-324-1.7977E+308
// double是Java中默认的小数类型
double d1 = 3.141592676565789381278;
System.out.println(d1);

// 定义字符char char类型占用2个字节 范围是0-65535
char c1 = 'a';
System.out.println(c1);

// 定义布尔值boolean boolean占用一个字节 
boolean bo1 = true;
System.out.println(bo1);

// 定义字符串 字符串String是一种引用类型
String str1 = "HelloWorld!";
System.out.println(str1);

java中的类型转换

java的类型转换分为隐式类型转换,和强制类型转换

隐式类型转换

  • 隐式类型转换是指在运算或者赋值过程中,自动进行的类型转换。
  • 只能由低精度的数据类型转换为高精度的数据类型
  • 高精度的数据类型在转换为低精度的数据类型时会报错
    转换规规则为 (byte short char)>>>(int)>>>(long)>>>(float)>>>(double)
    byte short char在运算时如果要发生隐式类型转换会一步到位直接转换为int类型
    ps:由于高精度的数据类型转换为低精度数据类型时可能会发生精度损失,java不允许隐式的进行这样的类型转换。
// 隐式类型转换
byte b = 1;
short s1 = 2;
// short s2 = b + s1; 
// 这句代码会报错,虽然short是比byte精度更高,但是只要发生隐式类型转换byte会一步到位转换为int
int i1 = b + s1;
// b隐式类型转换为int,使得s1也要隐式类型转换为int,最终结果为int
System.out.println(i1);

强制类型转换

  • 强制类型转换是指在代码中人为写入代码进行类型转换
  • 强转公式:(强转类型) 变量名
  • 类型的强制转换可能是不安全的,会损失精度。一般在无特殊要求的情况下,不进行强制类型转换

java中的运算符

java算数运算符

  • java中算数运算符有+ - * / %其意义不考虑隐式类型转换与数学中意义相差不大
    比较特殊的是/,当除法两边都是整数类型时,得到的结果是数学中的除法直接舍弃小数
  • java存在自增运算符++和自减运算符--
    自增运算符和自减运算符既可以写在变量之前,又可以写在变量之后,对于变量来说结果是相同的。但是写在变量之前表示先进行自增自减运算,然后再用自增自减后的结果参与其他运算,而写在变量之后表示,先进行其他运算,最后再进行自增自减运算。
// 两个整型相除得到的结果是个整数,即使用double类型接收也不能还原其结果
int a = 3;
int b = 2;
double c = a / b; // c的结果为1.0

int d = a++; // d的结果为3 先进行赋值运算后进行自加运算
int e = ++b; // e的结果为3 先进行自加运算后进行赋值运算

java中的赋值运算符

  • java中除了基础的赋值运算符=,也有+= -= /= *= %= 先算数运算再将结果赋值给原变量
  • 比较特殊的是类型转换问题
byte a = 1;
short b = 2;
// b = b + a; 如前所属会报错
b += a; // 不会报错 相当于执行了 c = (short)(b+a); 

由于会隐式的发生类型的强制转换,要注意。

byte a = 1;
short b = 32767;
b+=a; // b的结果为-32768 数据溢出

java中的比较运算符

java中的比较运算符用于判断数据的大小返回boolean类型数值

运算符 运算
== 判断是否相等
!= 判断是否不相等
> 判断是否大于
>= 判断是否大于等于
< 判断是否小于
<= 判断是否小于等于

java中的逻辑运算符

运算符 运算名 运算规则
& 当运算符两边都是真时才为真,否则为假
| 当运算符两边都为假时才为假,否则为真
! 返回与后边接着的布尔值相反的值
^ 异或 当运算符两边的布尔值不同时为真,否则为假
&& 短路与 当第一个布尔值为假时,不进行第二个布尔值的运算
|| 短路或 当第一个布尔值为真时,不进行第二个布尔值的运算

java中三元运算公式

  • (boolean)?result1:result2
  • 当boolean为真时返回result1否则返回result2
int a = (1>2)?1:0;  // a的结果为0
String s = (1<2)?"一小于二":"一不小于二"; // s的结果为“一小于二”

java中运算符的优先级次序

当运算式中出现多种运算符时,与数学运算式一样,不同的运算符是有优先级次序的。

优先级 描述 运算符
1 括号,取值 () []
2 正负号 + -
3 自增自减 非 ++ -- !
4 乘除取余 * / %
5 加减 + -
6 移位运算 >> >>> <<
7 大小关系 > >= < <=
8 相等关系 == !=
9 按位与 &
10 按位异或 ^
11 按位或 |
12 逻辑与 &&
13 逻辑或 ||
14 条件运算 ?:
15 赋值运算 = += -= *= /= %=
16 位赋值运算 &= |= <<= >>= >>>=

由于运算符的种类很多,拿不准的时候尽量加上(),明确运算次序,这样代码的可读性也比较高。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容