Java基础学习笔记:基本语法篇

JavaSE基础

JDK、JRE、JVM

JDK (Java Development Kit):是 Java 语言的软件开发工具包(SDK)。

JRE(Java Runtime Environment,Java运行环境),包含JVM标准实现及Java核心类库。

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

Jdk、JRE、JVM


基本语法

注释、标识符、关键字(BAT)

书写注释是一个非常好的习惯,平时写代码一定要注意规范

注释
  • 单行注释 //
    • 可以注释一行文字
  • 多行注释 /**/
    • 可以注释一段文字
  • 文档注释(JavaDoc)/** */
    • 大公司经常用
标识符

标识符规则如下

  • Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。

  • 所有的标识符都应该以**字母美元符($)、或者下划线**开始

  • 首字母之后可以是字母,美元符,下划线或数字的任何字符组合

  • 不能使用关键字作为变量名或方法名

  • 标识符是大小写敏感的

    合法标识符举例:age、$salary,_value、__1_value

    非法标识符距离:123abc、-salary、#abc

关键字

Java中的关键字有如下表格中这么多

关键字

具体细节查看:Java关键字及其作用详解


数据类型

Java的数据类型分为两大类

  • 基本数据类型
  • 引用数据类型
基本数据类型

Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

数据类型范围
byte8位、有符号
short16 位、有符号
int32位、有符号
long0L(64 位、有符号)
float0.0f(单精度、32位)
double0.0d(双精度、64 位)
char‘u0000’ ~ ‘uffff’
booleanfalse
  • 最大最小值表示方式:封装类.MIN(MAX)_VALUE
  • 面试真题:银行业务少用浮点类型,常用BigDecimal 数学工具类
float f = 0.1f;
double d = 1/10;
system.out.printl(f == d);//false

float f1 = 2311231231231231231231f;
float f2 = f1 + 1;
system.out.printl(f1 == f2);//true	
引用数据类型
  • 对象、数组、类、接口都是引用数据类型。
  • 所有引用类型的默认值都是null。
特殊的转义字符
符号字符含义
\n换行 (0x0a)
\r回车 (0x0d)
\f换页符(0x0c)
\b退格 (0x08)
\0空字符 (0x0)
\s空格 (0x20)
\t制表符
"双引号
单引号
\反斜杠
\ddd八进制字符 (ddd)
\uxxxx16进制Unicode字符 (xxxx)

自动类型转换

整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。

转换从低级到高级。

------------------------------------>byte,short,char> int> long> float> double 
  • 强制转换(高——低)

(类型)变量名

  • 自动转换(低——高)
  1. 不能进行Boolean类型转换
  2. 不能把对象类型转换为不相干的类型
  3. 把高容量转换到低容量时,强制转换
  4. 转换时可能存在内存溢出,或者精度损失!
//操作比较大的数的时候,注意溢出问题
        int money = 10_0000_0000;//JDK7新特性,数字之间可以用下划线分割
        int year = 20;
        int total1 = money * year;//输出一个负数,计算的时候溢出的
        long total2 = money * year;//先用原始的int类型计算完再转为long类型,所以转换之前已经出错

        //正确做法是在计算前先把一个数的数据类型转化为long类,再计算乘法
        long total3 = money * ((long) year);

常量、变量、作用域

常量

常量在程序运行时是不能被修改的。

在 Java 中使用 final 关键字来修饰常量,声明方式和变量类似:

final double PI = 3.1415927;
变量

Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域

type varName [=value] [{,varName[value]}]
 //数据类型 变量名 = 值;可以使用逗号隔开来声明多个同类型变量。
作用域
  • 类变量(修饰符static):static+数据类型+变量名

    • 可以不初始化
    • 可以在方法中直接调用
  • 实例变量

    • 从属于对象,需要声明不需要初始化
    • 在方法中调用前,需要先将类实例化(新建一个对象)
  • 局部变量

    • 必须声明和初始化值,只在方法内有效
public class Variable{
    static int allClicks=0;//类变量
    String str="hello world";//实例变量
    
    public void method(){
        int i =0;//局部变量
    }
}

运算符

Java的运算符,分为四类:

算数运算符、关系运算符、逻辑运算符、位运算符。

  • 算数运算符(9):+ - * / % -(取反) ~ ++ –
  • 关系运算符(6):== != > >= < <=
  • 逻辑运算符(6):&& || ! ^ & |
  • 位运算符(7):& | ~ ^ >> << >>>

优先级

一、算数运算符

算数运算符操作数必须是数值类型

分为一元运算符二元运算符

因操作数是一个,故称为一元运算符。

运算符含义例子
-改变数值的符号,取反-x(-1*x)
~逐位取反,属于位运算符~x
++自加1x++
自减1x–

数学中的加、减、乘、除等运算。因算术运算符是运算两个操作符,故又称为二元运算符

运算符含义例子
+加法运算x+y
-减法运算x-y
*乘法运算x*y
/除法运算x/y
%取模运算(求余运算)x%y
二、关系运算符

关系运算符用于比较两个数值之间的大小,其运算结果为一个逻辑类型(boolean布尔类型)的数值。

等于’==’不等于’!=’大于’>’大于等于’>=’小于’<’小于等于’<='

三、逻辑运算符

逻辑与’&&’逻辑或’||’逻辑非’!’逻辑异或’^’逻辑与’&’逻辑或’|'

两种逻辑与(&&&)的运算规则基本相同,两种逻辑或(|||)的运算规则也基本相同。
&|运算是把逻辑表达式全部计算完,而&&||运算具有短路计算功能。
对于&来说,如果左侧条件为false,也会计算右侧条件的值,而对于&&来说,如果左侧的条件为false,则不计算右侧的条件,这种现象被称作短路现象。
所谓短路计算,是指系统从左至右进行逻辑表达式的计算,一旦出现计算结果已经确定的情况,则计算过程即被终止。
对于&&运算来说,只要运算符左端的值为false,则因无论运算符右端的值为true或为false,其最终结果都为false。
所以,系统一旦判断出&&运算符左端的值为false,则系统将终止其后的计算过程;
对于 || 运算来说,只要运算符左端的值为true,则因无论运算符右端的值为true或为false,其最终结果都为true。
所以,系统一旦判断出|| 运算符左端的值为true,则系统将终止其后的计算过程。 

注:异或相同为false,相反则为true

在程序设计时使用&&和||运算符,不建议使用&和|运算符。

四、位运算符

位运算是以二进制位为单位进行的运算,其操作数和运算结果都是整型值。

位与’&’,位或’|’,位非’~’,位异或’^’,右移’>>’,左移’<<’,0填充的右移’>>>'

位运算的位与’&’,位或’|’,位非’~’,位异或’^'与逻辑运算的相应操作的真值表完全相同,其差别只是位运算操作的操作数和运算结果都是二进制整数,而逻辑运算相应操作的操作数和运算结果都是逻辑值boolean型。

位运算

位运算效率高

  • &:与
  • |:或
  • ^:异或
  • ~:非,取反
  • <<:左移,相当于乘2
  • >>:右移,相当于除以2

面试题:2*8=16,怎样运算最快

答:用位运算最快

0000 0001 1

0000 0010 2

0000 0100 4

0000 1000 8

0001 0000 16

所以把2左移3,就可以得到16

System.out.printlin(2<<3);//输出16
五、赋值运算符与其他运算符的简捷使用方式
  • 赋值运算符

可以与二元算术运算符、逻辑运算符和位运算符组合成简捷运算符,从而可以简化一些常用表达式的书写

  • 条件运算符(三目运算符)

x ? y : z

如果x==true,则返回y,否则返回z

  • 对象运算符instanceof

对象运算符instanceof用来测试一个指定对象是否是指定类(或它的子类)的实例,若是则返回true,否则返回false。

 String s = new String("sa");
        if(s instanceof Object){
            System.out.println("String is object class");
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值