Java基础语法(待续)

Java环境介绍:

  1. JDK(Java开发工具包)
  2. JRM (Java运行时环境):
    运行Java程序必须有的环境
  3. JVM (Java虚拟机):
    JVM作为JRM的一个主要的核心部分

三者的关系如下图:
三者的关系
编译过程:Java文件的源代码后缀为.java
运行过程:.java文件经过编译之后会生成二进制的字节码文件(后缀名 .class)

Java的基本数据类型

整形浮点型布尔型字符型
byte(1字节)float(4字节)booblean(1字节或者一个byte位 看JVM规定)char(2字节)
short(2字节)double(8字节)
int(4字节)
long(8字节)

Java为了保证能多平台运行,变量所占用的字节是固定的.

int的数据范围:
-2^31 - int - +2^31-1
大概-21亿到正21亿

其他的还有引用类型:

 Java的引用可以说是C语言的低配指针
 在Java语言中阉割了许多c语言中指针所能完成的操作
 同时C语言当中许多关键字也改变了它的本来用法
 

变量

变量形态(variable)局部变量(local variable)
属性/成员变量/实例变量
静态属性/类成员变量/类变量
class Test{
	static int a;	//静态属性/类成员变量/类变量
	int b;			//属性/成员变量/实例变量
	
	public static void main(String[] args ){
		int c;		//局部变量
	}
}

声明变量的时候注意格式

变量规范

int a = 10;
long num = 10_000_0000L;//避免混淆尽量使用大写并用下划线分割
double kk = 10.0;
float jj = 1.11F;

变量命名规范

硬性规则:
 其中最为核心的概念就是 对象
 变量可以由数字,字母,下划线,$构成,但是数字不能开头
 同时也不能和Java的关键字重复.
软性规则:
  第一要求见名知意,
 多个单子构成的变量名,可以使用驼峰命名法

  1. 小驼峰命名法(首个单词首字母小写,后续单词首字母大写)
    一般用于变量和方法名字
int studentname//不推荐
int studentNameLength
  1. 大驼峰命名法(所有单词首字母都大写)
    用于类名的命名
int StudentName
  1. 蛇形命名法(python常用)
int student_name
  1. 脊柱命名法(Java不支持CSS语言常用)
int student-name

双精度浮点数的辨析:

double a = 1.1;
if(a * a) == 1.21){
	System.out.println("相等");
}else{
	System.out.println("不相等");
}
//结束输出不相等.
//结果等于:1.2100000000000002

上面有误差的原因是:java 的double类型遵循IEEE 754标准
这种方式表示的浮点数不一定是精确的值,可能会产生误差.

比较浮点数是否相等不能直接用 == 来比较;
正确的做法应该是把两个要比较的浮点数进行相减,然后比较这个差值是否小于误差允许的范围;

   double aa = 1.1;
        if(aa*aa - 1.21 < 0.0000001&&
            aa*aa -1.21 > - 0.0000001){
            System.out.println("xiangtong");
        }

字节类型(byte)

 一个字节
 在网络编程的时候有比较重要的作用

Java没有unsigned

Java没有unsigned(无符号)
因为unsigned使用的时候有很多问题.

unsigned int a = 10;
unsigned int b = 20;
a-b = -10;
//输出的时候因为没有符号位导致数据异常;

强制类型转换

常量

字面值

解释
10int 字面值常量(十进制)
010int 字面值常量(八进制)由数字 0 开头. 010 也就是十进制的 8
0x10int 字面值常量(十六进制)由数字 0x 开头.0x10 也就是十进制的 16
10Lint 字面值常量(八进制) /也可以写成10l (小写的 l ) 不推荐使用小写
1.0double 字面值常量 . 可以写成 1.0d 或者 1.0D
1.5e2double 字面值常量 . 科学计数法表示相当于 1.5 * 10 ^ 2
1.0ffloat 字面值常量,也可以写成1.0F
trueboolen 字面值常量,
‘a’char 字面值常量,单引号里面只能有一个字符
“asfgg”String 字面值常量 , 双引号里面可以有多个字符

final关键字修饰的常量

final int a = 10;
a = 20;
//编译出错因为不能为最终变量a分类值

转义字符

转义字符解释
\n换行
\r回到行首
\t水平制表符
单引号
"双引号
\反斜杠

除法的特殊情况

  		double a = 5.5;
        double b = 1.5;
        System.out.println(a%b);
        b = 0;
        System.out.println(a/b);
        int aa = 17;
        int bb = 2;
        System.out.println(aa%bb);
        bb = 0;
        System.out.println(aa/bb);
        /*
1.0
Infinity
1
Exception in thread "main" java.lang.ArithmeticException

整形类型等的除法中除数为0 的时候会抛出异常
而浮点类型会显示无穷大.
原因是因为整形类型在处理的时候cpu会因此报错,而浮点类型根据IEEE标志浮点数0是一个无穷小的数字而不是0;因此不会报错而是Infinity(无穷大)

逻辑符号的使用技巧:

  1. 逻辑符号&& || 有着短路求值的作用
    	int a = 10;
        int b = 20;
        System.out.println(a>b && (a/0) == 0);
        System.out.println(a<b && (a/0) == 0);
/*
false
Exception in thread "main" java.lang.ArithmeticException*/

 按照正常运算,在运行 a/0 时会因为除数为零而抛出错误但是,因为&&短路求值的作用,在计算a>b的booblean的值为false就不再计算右侧 a/0 的值从而不会抛出错误.

  1. 逻辑符号 & 和 | 不支持短路求值;

 如果操作数是boolean类型,那么运算行为就是进行逻辑与 / 逻辑或
 如果操作数是整数类型,行为就是按位与 / 按位或

 按位与运算:如果两个对应的比特位都为1,结果为1否则为0.
 按位或运算:如果两个对应的比特位都为0,结果为0,否则为1.

        int a = 10;//01010
        int b = 20;//10100
        System.out.println(a & b);
        System.out.println(a | b);

        /*
        0
        30
        */
  1. 逻辑符号 ~ 和 ^ (二进制)
    ^ 按位比较相同为0 , 不同为1.
    ~ 按位取反.
        int a = 10;//0000 1010
        int b = 20;//0001 0100
        System.out.println(a^b);//00011110;
        System.out.printf("%x",~a);//fffffff5
        //1111 1111 1111 1111 1111 1111 1111 0101 = 10的取反
        //0000 0000 0000 0000 0000 0000 0000 1010 = 10
  1. 移位运算
<<  左移  : 最左侧一位为不要了,在最右侧补0,左移一位相当于 * 2
>> 算数右移   : 最右侧一位不要了,在左侧补符号位,右移一位相当于 / 2
>>> 逻辑右移  : 最右侧一位不要了,在最左侧补0;
		int num = 10;  //1010
        System.out.println(num<<1);
        System.out.println(num<<2);
        System.out.println(num>>1);
/*
		20
		40
		5
*/

注意事项: 移位运算的时候,移动的位数不能太大,也不能是负数

Java语言的作用域

在这里插入图片描述

static 的用法

C中的static

  1. 修饰局部变量,修改了生命周期
  2. 修饰全局变量,修改了作用域
  3. 修饰函数,修改了作用域

Java中的static

  1. 待续

注释标准

//内容    单行注释
 
/内容/     多行注释
 
/** 内容 */   文档注释
 
方便后期生成注释文档
 如果你写了-个函数/类给别人用,通过文档注释,来告诉调用者,该函数/类的用法.使用专门的文档生成工具,就可以自动提取出文档注释的内容生成一定格式的文档文件.
 在IDEA中使用ctrl +鼠标左键跳转到类/方法的定义

//注释内容

/*
注释内容
*/

/**
文档注释
*/

分支结构

switch(整数|枚举|字符|字符串){
 case 内容1 : {
 内容满足时执行语句;
 break;
 }
 case 内容2 : {
 内容满足时执行语句;
 break;
 }
 ...
 default:{
 内容都不满足时执行语句;
 break;
 } 
}

switch的括号里只能使用整形或者字符串类型作为判断

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值