java基础语法
Java基础语法
注释
书写注释是一个非常好的习惯
- 单行注释
//
- 多行注释
/*
abc
*/
- 文档注释
/**
* @Description h
* @Author lgt
*/
标识符
Java所有的组成部分都需要名字,类名,变量名以及方法名,都称之为标识符
标识符都只能一字母数字下划线$组成,首字母只能是字母,$,下划线
标识符是大小写敏感的
且不建议以中文拼音命名,建议以英文单词命名,简单易懂
关键字
IDEA内高亮
| 关键字 | 含义 |
|---|---|
| abstract | 表明类或者成员方法具有抽象属性 |
| assert | 断言,用来进行程序调试 |
| boolean | 基本数据类型之一,声明布尔类型的关键字 |
| break | 提前跳出一个块 |
| byte | 基本数据类型之一,字节类型 |
| case | 用在switch语句之中,表示其中的一个分支 |
| catch | 用在异常处理中,用来捕捉异常 |
| char | 基本数据类型之一,字符类型 |
| class | 声明一个类 |
| const | 保留关键字,没有具体含义 |
| continue | 回到一个块的开始处 |
| default | 默认,例如,用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现 |
| do | 用在do-while循环结构中 |
| double | 基本数据类型之一,双精度浮点数类型 |
| else | 用在条件语句中,表明当条件不成立时的分支 |
| enum | 枚举 |
| extends | 表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口 |
| final | 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量 |
| finally | 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块 |
| float | 基本数据类型之一,单精度浮点数类型 |
| for | 一种循环结构的引导词 |
| goto | 保留关键字,没有具体含义 |
| if | 条件语句的引导词 |
| implements | 表明一个类实现了给定的接口 |
| import | 表明要访问指定的类或包 |
| instanceof | 用来测试一个对象是否是指定类型的实例对象 |
| int | 基本数据类型之一,整数类型 |
| interface | 接口 |
| long | 基本数据类型之一,长整数类型 |
| native | 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的 |
| new | 用来创建新实例对象 |
| package | 包 |
| private | 一种访问控制方式:私用模式 |
| protected | 一种访问控制方式:保护模式 |
| public | 一种访问控制方式:共用模式 |
| return | 从成员方法中返回数据 |
| short | 基本数据类型之一,短整数类型 |
| static | 表明具有静态属性 |
| strictfp | 用来声明FP_strict(单精度或双精度浮点数)表达式遵循[IEEE 754](https://baike.baidu.com/item/IEEE 754)算术规范 |
| super | 表明当前对象的父类型的引用或者父类型的构造方法 |
| switch | 分支语句结构的引导词 |
| synchronized | 表明一段代码需要同步执行 |
| this | 指向当前实例对象的引用 |
| throw | 抛出一个异常 |
| throws | 声明在当前定义的成员方法中所有需要抛出的异常 |
| transient | 声明不用序列化的成员域 |
| try | 尝试一个可能抛出异常的程序块 |
| void | 声明当前成员方法没有返回值 |
| volatile | 表明两个或者多个变量必须同步地发生变化 |
| while | 用在循环结构中 |
学到面向对象后基本可以学完
数据类型
Java属于强类型语言:要求变量严格符合规定,所有变量都必须先定义后才能使用。
优点:安全性高
缺点:运行速度慢
基本数据类型
数值类型
-
整数类型
byte 1字节
short 2字节
int 4字节
long 8字节 long类型要在数字后面加L
-
浮点类型
float 4字节 float在数字后面+F
double 8字节
-
字符类型
char 2字节
-
字符串
String 他不是关键词,他是一个类
Boolean类型 :占1位,且只有true和false,表是非。
什么是字节?自己百度,分清楚,位,字节,字符。
可以通过进入各个类型的类,查看范围,不用刻意记。
引用数据类型
- 类
- 接口
- 数组
数据类型拓展及面试题
整数拓展
进制:
二进制0b
十进制
八进制0
十六进制0x
0b 0 0x 都是开头
int i = 10;
int i2 = 010;
int i3 = 0x10;
浮点数拓展
float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d); //flase
System.out.println(f);
System.out.println(d);
float d1 = 1134141111111541341f;
float d2 = d1 + 1;
System.out.println(d1==d2); //true
为什么?
浮点数是有限的,离散的,有舍入误差,只能是个大约的数字,接近但不等于
所以,最好完全避免使用浮点数进行比较。
银行业务怎么表示?
BigDecimal 数学工具类 有兴趣可自行百度
字符类拓展
char c1 = 'a';
char c2 = '中';
System.out.println((int)c1); //强制转换
System.out.println((int)c2);
所有的字符本质还是数字
编码:Unicode 占2字节 0-65536(2^16)
95 = a ,65 = A U0000-UFFFF
查表输出数字
转义字符
\t 制表符,table
\n换行
对象
String sa = new String("hello,world");
String sb = new String("hello,world");
System.out.println(sa==sb);
String sc = "hello,world";
String sd = "hello,world";
System.out.println(sc==sd);
学到对象,从内存分析,留个小伏笔。
布尔值
if (flag==true){}
if (flag){}
以上表示相等
但是
if (a){}
if (a!=0){}
//
if (a==0){}
if (!a){}
以上在c语言内是相等的
在Java里if(a)和if(!a)会报错
报错:
java: 不兼容的类型: int无法转换为boolean
类型转换
由于Java是强类型语言,所以要进行有些运算的时候,需要类型转换。
分为强制转换和自动转换
运算中,不同类型的数据先转化为同一类型,然后进行运算
byte,short,char<int<long<float<double
什么时候强制转换?什么时候自动转换?
高--低 强制转换
低--高 自动转换
考点
int i = 128;
byte b = (byte)i; //强制转化 (类型)变量名
System.out.println(i); //128
System.out.println(b); //-128
为什么?
因为byte类型范围为-128--127,所以128造成内存溢出
所以转换时要避免内存溢出
注意:
1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.把大容量转换到低容量是,强制转换
4.转换时可能存在内存溢出,或者精度问题
//操作比较大的数的时候,注意溢出问题
int money = 100_0000_000; //jdk7新特性,数字之间可以用下划线分割
System.out.println(money);
int years = 20;
int total= money*years;
System.out.println(total);//-1474836480,计算的时候溢出了
long total2=money*years;
System.out.println(total2);//-1474836480 为什么?因为转换前,先计算money*years,这个是int类型,已经存在问题了。
long total3=money*((long)years);
System.out.println(total3);

浙公网安备 33010602011771号