java基础语法

JAVA

关键字

Java关键字是Java语言保留供内部使用的,如 class 用于定义类。 关键字也可以称为

保留字,它们的意思是一样的。是被系统征用的特殊单词(标识符),而且是被广大程
序员所认知的。

关键字 : Java关键字是Java语言保留供内部使用的特殊单词,已经在使用 public公共的 class
关键字会变色
关键字全部小写
保留字 : 是Java语言保留供内部使用的特殊单词,但是现在还没有被使用,所以叫做保留 goto const

注意: 关键字和保留字都不能被使用

关键字列表:

在这里插入图片描述

goto和const作为保留字存在。
类似于Notepad++这样的高级记事本会对关键字有特殊颜色标记
注意 :不能使用关键字作为变量名或方法名**

public class Demo03{ 
	public static void main(String[] args){
		
		int public = 123;
		
		System.out.println(123);
		
	}
	
}

标识符

就是给类,接口,方法,变量等起名字的字符序列。用来查找、定位、标明、唯一确认内容。
表示类名的标识符用大写字母开始。如: Man , GoodMan
表示方法和变量的标识符用小写字母开始,后面的描述性词以大写开始。 eat() , eatFood()

ava 标识符有如下命名规则:

  • 标识符必须以字母、下划线_ 、美元符开头。
  • 标识符其它部分可以是字母、下划线“_”、美元符“ ”和数字的任意组合。
  • Java 标识符大小写敏感,且长度无限制。
  • 不可以是Java的关键字

JAVA不采用通常语言使用的ASCII字符集,而是采用unicode这样的标准的国际字符集。因此,这里的字母的含义:英文、汉字等等。(不建议大家使用汉字来定义标识符!)

  • 合法的标识符
int a = 3;
int _123 = 3;
int $12aa = 3;
int 变量1 = 55;
  • 不合法的标识符
int 1a = 3;  //不能用数字开头
int a# = 3;  //不能包含#这样的特殊字符
int int = 3;  //不能使用关键字

变量(variable)

我们通过变量来操纵存储空间中的数据,变量就是指代这个存储空间!空间位置是确定的,但是里面放置什么值不确定!

**Java是一种强类型语言,**每个变量都必须声明其类型。

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

  • 变量在使用前必须对其声明, 只有在变量声明以后,才能为其分配相应长度的存储单元,声明格式
    为: type varName [=value] ;

  • 注意事项:

    • 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
      • 变量名必须是合法的标识符。
      • 变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
  • 变量声明举例

double salary ;
boolean done;
long earthPopulation ;
int age ;
  • 可以在一行中声明多个变量
int i ,j; // both are integer

不提倡这种风格,逐一声明每一个变量可以提高程序可读性

  • 可以将变量的声明和初始化放在同一行中,例如
int age = 18;
float e = 2.718281828f;
  • 变量可划分为

  • 局部变量(lacal variable) :方法或语句块内部定义的变量。生命周期是从声明位置开始到 } 为止。
    在使用前必须先声明和初始化(赋初值)

public void incorrectLocalV() {
  int i;
  i=10;
  int j = i+5 ; // 编译出错,变量i还未被初始化
}
  • 实例变量(成员变量 member variable):方法外部、类的内部定义的变量。从属于对象,生命周期伴随对象始终

    如果不自行初始化,他会自动初始化成该类型的默认初始值(数值型变量初始化成0或0.0,字符型变量的初始化值是16位的0,布尔型默认是false)

  • 静态变量(类变量 static variable):使用static定义。 从属于类,生命周期伴随类始终,从
    类加载到卸载。 (注:讲完内存分析后我们再深入!先放一放这个概念!)

    如果不自行初始化,他会自动初始化成该类型的默认初始值(数值型变量初始化成0或0.0,字符型变量的初始化值是16位的0,布尔型默认是false)

常量(Constant)

常量:初始化(initialize)后不能再改变值!

public class Constants {
  public static void main(String[] args) {
    final double PI = 3.14;
    // PI = 3.15;  //error
    double r = 4;
    double area = PI * r * r;
    double circle = 2 * PI * r;
    System.out.println("area = " + area);
    System.out.println("circle = " + circle);
 }
}

命名规则(规范)

  • 所有变量、方法、类名:见名知意
  • 类成员变量:首字母小写和驼峰原则 : monthSalary
  • 局部变量:首字母小写和驼峰原则
  • 常量:大写字母和下划线:MAX_VALUE
  • 类名:首字母大写和驼峰原则: Man, GoodMan 基本数据类型(primitive data type)
  • 方法名:首字母小写和驼峰原则: run(), runRun(

基本数据类型(primitive data type)

  • Java是一种强类型语言,每个变量都必须声明其类型。
  • Java的数据类型分为两大类:基本类型(primitive type)和引用类型(reference type)
  • Java中定义了3类8种基本数据类型
    • ​ 逻辑型-boolean
      • 文本型- char
      • 数值型- byte, short, int, long, float, double

在这里插入图片描述

注:引用数据类型的大小统一为4个字节,记录的是其引用对象的地址!

. 整型变量

整型用于表示没有小数部分的数值,它允许是负数。
整型的范围与运行Java代码的机器无关,这正是Java程序具有很强移植能力的原因之一。于此相反,C和C++程序需要针对不同的处理器选择最有效的整形
在这里插入图片描述

Java 语言整型常数的三种表示形式:

  • 十进制整数,如:99, -500, 0。
  • 八进制整数,要求以 0 开头,如:015。
  • ​ 十六进制数,要求 0x 或 0X 开头,如:0x15 。

Java语言的整型常数默认为int型,声明long型常量可以后加‘ l ’或‘ L ’ ,如:

long a = 55555555;  //不出错,在Int表示的范围内(21亿内)。
long b = 55555555555;//不加l出错,已经超过int表示的范围

报错:
The literal 55555555555 of type int is out of range

Java中没有无符号类型

浮点型

在这里插入图片描述

-float类型又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很
难满足需求。

  • double表示这种类型的数值精度是float类型的两倍,又被称作双精度,绝大部分应用程序都采
    double类型。

Java 浮点类型常量有两种表示形式

十进制数形式,例如:
3.14 314.0 0.314
科学记数法形式,如
314e2 314E2 314E-2
float 类型的数值有一个后缀 F|f ,没有后缀 F|f 的浮点数值默认为 double 类型。也可以在浮点数值
后添加后缀 D|d , 以明确其为double类型:

​ 浮点类型float, double的数据不适合在不容许舍入误差的金融计算领域。 如果需要进行不产生舍
入误差的精确数字计算,需要使用BigDecimal类。
主要理由:由于字长有限,浮点数能够精确表示的数是有限的,因而也是离散的。浮点数一般都存
在舍入误差,很多数字无法精确表示(例如0.1),其结果只能是接近, 但不等于。
二进制浮点数不能精确的表示0.1,0.01,0.001这样10的负次幂。并不是所有的小数都能可以精确的
用二进制浮点数表示。最好完全避免使用浮点数比较:

double f = 314e2;  //31410^2-->31400.0
double f2 = 314e-2; //31410^(-2)-->3.14
float f = 0.1f;
double d = 1.0/10;
System.out.println( f d);  //false
float d1 = 423432423f;
float d2 = d1+1;
if(d1 d2){
System.out.println("d1==d2");
}else{
System.out.println("d1!=d2");
}

大数值:
Java.math下面的两个有用的类:BigInteger和BigDecimal,这两个类可以处理
任意长度的数值。BigInteger实现了任意精度的整数运算。BigDecimal实现了任
意精度的浮点运算。
浮点数使用总结:

  1. 默认是double
  2. 浮点数存在舍入误差,很多数字不能精确表示。如果需要进行不产生舍入
    误差的精确数字计算,需要使用BigDecimal类。
    避免比较中使用浮点数

字符型(2个字节

  • 单引号用来表示字符常量。例如 ‘A’ 是一个字符,它与 “A” 是不同的, “A” 表示含有一个字符的
    字符串。
  • char 类型用来表示在 Unicode 编码表中的字符。
  • Unicode 编码被设计用来处理各种语言的所有文字,它占2个字节,可允许有65536 个字符;ASCII码占1个字节,可允许有128个字符,是Unicode编码表中前128个字符。
char eChar = 'a';
char cChar ='中';
  • Unicode具有从0到65535之间的编码,他们通常用从 ’\u0000’ 到 ’\uFFFF’ 之间的十六进制值来表
    示(前缀为u表示Unicode)
char c = '\u0061';
  • Java 语言中还允许使用转义字符 ‘\’ 来将其后的字符转变为其它的含义
char c2 = '\n';  //代表换行符 •

在这里插入图片描述

注:以后我们学的String类,其实是字符序列(char sequence)

boolean类型(一位,不是一个字节):

  • boolean类型有两个值,true和false,不可以 0 或非 0 的整数替代 true 和 false ,这点和C语言不
    同。
  • boolean 类型用来判断逻辑条件,一般用于程序流程控制 。
boolean flag ;
flag = ………;
if(flag) {
  // true分支
} else {
  // false分支
}

​ 实践:Less is More!!请不要这样写:if ( is == true && done == false ) ,只有
​ 新手才那么写。 对于任何程序员 if ( whether && !done ) 都不难理解吧。所以去
​ 掉所有的==fasle 和 ==true

类型转换

自动类型转换

  • 自动类型转换:容量小的数据类型可以自动转换为容量大的数据类型。在图中,黑色的实线表示无数据丢失的自动类型转换,而红色的虚线表示在转换时可能会精度的损失。
  • 特例: 可以将整型常量直接赋值给byte, short, char等类型变量,而不需要进行强制类型转换,只要不超出其表数范围
short  b = 12;   //合法
short  b = 1234567;  //非法

在这里插入图片描述

强制类型转换

  • 强制类型转换(Cast): 强制类型转换,又被称为造型,用于显式的转换一个数值的类型. 在有可
    能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出。
  • 强制类型转换的语法格式: (type)var ,运算符“()”中的type表示将值var想要转换成的目标数据类
    型。
double x  = 3.14;
int nx = (int)x;  //值为3
char c = 'a';
int d = c+1;
System.out.println(d);
System.out.println((char)d);

当将一种类型强制转换成另一种类型,而又超出了目标类型的表示范围,就会被截断成为一个完全不同的值。

int x = 300;
byte bx = (byte)x;   //值为44

不能在布尔类型和任何数值类型之间做强制类型转换

基本类型转化时常见错误和问题

操作比较大的数时,要留意是否溢出,尤其是整数操作时。

int money = 1000000000;  //10亿
int years = 20;
int total = money*years;  //返回的是负数
long total1 = money*years;  //返回的仍然是负数。默认是int,因此结果会转成int值,再转成
long。但是已经发生了数据丢失
long total2 = money*((long)years);  //先将一个因子变成long,整个表达式发生提升。全部用
long来计算。

L和l 的问题

不要命名名字为 l 的变量
long 类型使用大写 L 不要用小写。

int l = 2;
long a = 23451l;
System.out.println(l+1);

随机生成

Math 类提供了一个名叫 random 的方法, 可以随机生成 [0,1) 之间的任意double类型的数据

double i = Math.random();
double j = Math.random();
  • 通过扩大和平移可以生成任意区间的数据
  • 通过强转可将小数取整
public class Ran{
	public static void main(String[] arges){
		//[6,11)
		System.out.println((int)(Math.random()*(11-6)+6));
		System.out.println((int)(Math.random()*(11-6)+6));
		System.out.println((int)(Math.random()*(11-6)+6));
		System.out.println((int)(Math.random()*(11-6)+6));
		System.out.println((int)(Math.random()*(11-6)+6));
		System.out.println((int)(Math.random()*(11-6)+6));
	}
}

public static void main(String[] arges){
//[6,11)
System.out.println((int)(Math.random()(11-6)+6));
System.out.println((int)(Math.random()
(11-6)+6));
System.out.println((int)(Math.random()(11-6)+6));
System.out.println((int)(Math.random()
(11-6)+6));
System.out.println((int)(Math.random()(11-6)+6));
System.out.println((int)(Math.random()
(11-6)+6));
}
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值