Java基础知识概述

一、关键字和保留字

关键字:具有特殊含义
特点:所有关键字都是小写的

int final等等

保留字:现在未使用,以后可能以关键字使用

goto、const

二、标识符的命名规范

1、定义:凡是可以自己起名字的都是标识符
2、规则

①字母数字下划线或$
②数字不可以开头
③不可以使用关键字和保留字,但可以包含
④严格区分大小写,长度无限制
⑤不能包含空格

3、命名规范

包名:多单词组成时所有字母都小写 xxxyyyzzz
类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
变量名、方法名:多单词组成时,第一个单词的首字母小写,第二个开始每个单词首字母大写:xxxYyyZzz
常量名所有字母都大写,多单词时每个单词用下划线连接:XXX_YYY_ZZZ

4、注意

①见名知意
②Java采用Unicode字符集,因此标识符也可以用汉字声明,不建议使用

三、变量

1、先声明后使用
2、数据类型 变量名=变量值;
强类型语言
3、说明

①变量必须先声明后使用
②变量都定义在其作用域内,在作用域内,它是有效的,换句话说,出了定义域就失效了
③同一个作用域内,不可以声明两个同名的变量

4、数据类型
①按照数据类型分

基本数据类型:数值型:整数类型(byte\short\int\long),浮点类型(double\float);字符型(char);布尔型(boolean)
引用数据类型:类(class)–字符串在类中、接口(interface)、数组([])

整数类型

1 2 4 8字节
long后面要加l/L
byte范围:-128~127
常用和默认int

浮点型

单精度 4float
双精度 8double
float后面必须加f或F
float表示数值的范围比long还大 ,但是double的精确度高
常用和默认double

字符型

一字符=2字节
char c1=‘a’;
转义字符

布尔类型

true false
常在条件判断、循环结构中使用
直接使用unicode制表符

5、变量在类中声明的位置
成员变量 vs 局部变量
6、自动类型转换和强制类型转换
这里讨论的只是七种基本数据类型转换,没有布尔类型
自动类型转换

当容量小的的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的 byte和short和char—> int–> long–> float–> double 从左向右靠
特别的当byte和short和char三种类型的变量做运算时,结果为int

强制类型转换

需要使用强转符()
强制类型转换,可能导致精度损失
(int)12.23=12 损失

7、字符串类型

①引用数据类型
②“”
③string可以和八种基本数据类型做运算,且运算只能是连接运算+ 运算的结果仍然是string类型

四、运算符

1、算数运算符

      • / % ++ –
        前++ ++i:先自增1,然后再运算
        后++ i++:先运算,后自增1

2、赋值运算符

= += -= *= /= %=

3、比较运算符

== != < > <= >= instanceof()检查是否为类的对象

4、逻辑运算符

& | ! && || ^

说明: ①逻辑运算符操作的都是布尔类型的变量,位运算符左右是数值型的
②&与&&的区分
相同点:&与&&的运算结果相同
当符号左边是true的时候,二者都会执行符号右边的运算
不同点:当符号左边是false时,&继续执行符号右边的运算。(短路与)&&不再执行符号右边的运算

5、位运算符(了解)

操作的都是整型的数据 针对二进制数来说的左右移动 向左移后补0 向右移 左补0
每向左移一位 相当于2 右移 /2
左移 3<<2=12–>3
2*2=12
右移 3>>1=1–>3/2=1 最高位时0或1不变
无符号右移 3>>>1=1–>3/2=1 最高位是0(第一个数)
//把其写成二进制 然后用逻辑与或运算 最后出结果
…0 0 0 0
…0 1 0 1
——————
…0 1 0 1
&与运算 6&3=2
| 或 运算 6|3=7
^ 异或运算 6^3=5
~取反运算 ~6=7 0变1 1变0

6、三元运算符(推荐使用)

(表达式)?表达式1:表达式2;
可以嵌套使用
凡是用三元运算符的都可以写成if else的,反之不成立

7、运算符的优先级

五、流程控制

1、分支结构

第一种:
if(条件表达式)
{
执行表达式1;
}
第二种:
if(条件表达式)
{
执行表达式1;
}else
{
执行表达式2;
}
第三种:
if(条件表达式)
{
执行表达式1;
}else if
{
执行表达式2;
}
......
else{
执行表达式n;
}
用键盘输入
①导包:import java.util.Scanner
②Scanner的实例化:Scanner scan=new  Scanner(System.in);
③调用Scanner类的相关方法来获取指定类型的变量
int  num=scan.nextInt();
nextFloat等也行
switch-case结构
switch(表达式){
case 常量1:
     语句1;
     break;
case 常量2:
     语句2;
     break;
     ......
case 常量N:
     语句N;
     break;
default:
     语句;
      break;
}

switch()中的小括号里面,只能是如下的6种数据类型之一:byte、short、char、int、枚举类型、string类型
case后面只能声明常量 效率比if else高

2、循环结构

四个要素: ①初始化条件
②循环条件
③循环体
④迭代条件

第一种
①
while(②)
{
③;
④;
}
第二种
①
do
{
③;
④;
}
while(②)
第三种
for(①;②;④){}

3、break和continue关键字

break:switch-case循环结构种 结束当前循环
continue:循环结构中 结束本次循环

六、数组

1、数组的相关概念
数组名、元素、角标(下标、索引)、数组的长度:元素的个数
2、数组的特点

①数组是有序排列的
②数组是引用变量类型。数组的元素既可以是基本数据类型也可以是引用数据类型
③创建数组对象会在内存中开辟一整块连续的空间
④数组的长度一旦确定不能修改

3、数组的分类

①按照维数:一维数组、二维数组
②按照数组元素的类型:基本数据类型元素的数组、引用数据类型元素的数组

4、一维数组的使用
一维数组的声明和初始化

//1.1静态初始化:数组的初始化和数组元素的赋值操作同时进行
            int [] num;//声明
            num=new int[]{1,2,3};
           //1.2动态初始化:数组的初始化和数组元素的赋值操作分开进行
            String [] names=new String[5];//初始化
总结:数组一旦初始化完成,其长度就确定了

如何调用数组的指定位置的元素

0----length-1

如何获取数组的长度

names.length

如何遍历数组

for循环

数组元素的默认初始化

值为0  0.0  false  null

数组的内存解析

栈---局部变量   堆---new的内容

5、二维数组的使用

对于二维数组的理解,我们可以看成是一维数组array1又作为另一个一维数组array2的元素而存在
其实,从数组底层来看,没有多维数组

二维数组的声明和初始化

//1.1静态初始化:数组的初始化和数组元素的赋值操作同时进行
            int [] [] num=new int[][]{{1,2,3},{1,2}};
           //1.2动态初始化:数组的初始化和数组元素的赋值操作分开进行
            String [] [] names=new String[5][2];//初始化
            String [] [] name=new String[5][2];

如何调用数组的指定位置的元素

arr[ ][ ]

如何获取数组的长度

.length

如何遍历数组
数组元素的默认初始化

对于初始化方式1.2.1
外层a[ ]是地址值
内层a[ ][ ]是0
对于初始化方式1.2.1
外层a[ ]是null
内层a[ ][ ]:不能调用,否则报错

数组的内存解析

栈---局部变量  
堆---new的内容   
第一个数组中的每一个小块指向另一个数组
  int [] arr4={1,2,3};正确

6、数组的工具类

在帮助文档中
① boolean equals(int[] a,int[] b) 判断两个数组是否相等。
②String toString(int[] a) 输出数组信息。
③void fill(int[] a,int val) 将指定值填充到数组之中。
④ void sort(int[] a) 对数组进行排序。
⑤ int binarySearch(int[] a,int key) 对排序后的数组进行二分法检索指定的值。

7、数组中常见异常
数组脚标越界异常(ArrayIndexOutOfBoundsException)

int[] arr = new int[2];
System.out.println(arr[2]);
System.out.println(arr[-1]);
访问到了数组中的不存在的脚标时发生。

空指针异常(NullPointerException)

int[] arr = null;
System.out.println(arr[0]);
arr引用没有指向实体,却在操作实体中的元素时。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值