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);
posted @ 2022-04-07 17:13  有情才能相守  阅读(115)  评论(0)    收藏  举报