JavaSE-从入门到精通(1)

 一.初识main方法

1.1 main方法示例

public class Hello {
	public static void main(String[] args){
		System.out.println("hello");
}}
class LJBB
{

}

如上是一个简单的Java程序,可能第一次看的时候大家都一头雾水,为什么这多public,class,别急,其实很易懂,java的main方法应该是主流语言中最长的

通过上述代码可以看到一个完整的Java程序由三个部分构成:

1.源文件(扩展名为*java):源文件带有类的定义,类用来表示程序的一个组件,小程序或许只会有一
类。类的内容必须包含在花括号里面。
2.类:类中带有一个或多个方法,方法必须在类的内部声明,
3.方法:在方法的花括号中编写方法应该执行的语句。

总结:类存在于源文件里面:方法存在子类中:语句存在了方法中。

注意:在一个源文件中只能有一个public修饰的类,而且源文件名字必须与public修饰的类名字相同
好了,代码编写完了,如何让它"运行"起来呢?

 二.运行Java程序

Java是一门半编译型,半解释型的语言,先通过javac编译程序把源文件进行编译,编译后生成的.class文件是由字节码组成的平台无关、面向VM的文件。最后启动java虚拟机来运行:class文件,此时VM会将字节码转换成平台能够理解的形式来运行。

1.使用记事本或者IDEA(集成开发环境)编写Java源程序。IDEA更适合新手
2.使用javac,exe编译器编译Java源程序,生成xxx.class的字节码文件 语法格式:javac xxx,iava3.使用java运行xxx.class字节码文件 语法格式:java xxx
注意:在运行ava程序前,必须先安装好DK(ava Development Kit即java开发工具包),JDK里面就包含了Javac和Java工具,Java程序最终是在JVM(ava虚拟机)中运行的。

此处运行结果示例:

注:目录要在java文件所在的目录

以下是JDK,JRM,JVM三者的关系:

2.1注释符

// 注释内容

/*....*...*... */此类注释可以写入javac文档

2.2标识符

在java程序中,Test称为类名,main成为方法名,也可以将其称为标识符,即在程序中由用户给定类名,方法名或变量名。

标识符可以包含字母,数字,下划线以及$符号等等。

不能以数字开头。

我们通常建议,类名取为字母大写的单词,方法名通常首字母小写,其余大写的单词

变量名与方法名规则相同。

2.3关键字

关键字由java语言提前定义好的,有特殊含义的标识符或者保留字。

 三,数据类型

常量即程序运行期间,固定不变的量称为常量
public class Demo {
public static void main ( String [] args ){
System . Out . println ( "hello world!" );
System . Out . println ( 100 );
System . Out . println ( 3.14 );
System . Out . println ( 'A' );
System . Out . println ( true );
System . Out . println ( false );
}
}

 其中:1003.14‘A’true/false都是常量,将其称为字面常量。

字面常量的分类:
1. 字符串常量:由 "" 括起来的,比如 “12345” “hello” 你好
2. 整形常量:程序中直接写的数字 ( 注意没有小数点 ) ,比如: 100 1000
3. 浮点数常量:程序中直接写的小数,比如: 3.14 0.49
4. 字符常量:由 单引号 括起来的当个字符,比如: ‘A’ ‘1’
5. 布尔常量:只有两种 true false
6. 空常量: null( 后面了讲 )

 3.1数据类型

Java 中数据类型主要分为两类: 基本数据类型 引用数据类型
基本数据类型有四类八种:
1. 四类:整型、浮点型、字符型以及布尔型
2. 八种

注意:
不论是在 16 位系统还是 32 位系统, int 都占用 4 个字节, long 都占 8 个字节
整形和浮点型都是带有符号的
整型默认为 int 型,浮点型默认为 double
字符串属于引用类型,该种类型后序介绍。
1KB = 1024 Byte, 1MB = 1024 KB, 1GB = 1024 MB

3.2 变量

在程序中,除了有始终不变的常量外,有些内容可能会经常改变,比如:人的年龄、身高、成绩分数、数学函数的
计算结果等,对 于这些经常改变的内容,在 Java 程序中,称为变量 而数据类型就是用来定义不同种类变量的

 变量语法格式

数据类型 变量名 = 初始值 ;

3.2.1整形变量

// 方式一:在定义时给出初始值
int a = 10;
// 方式二:在定义时没有给初始值,但使用前必须设置初值
int b;
b = 10;
// 使用方式二定义后,在使用前如果没有赋值,则编译期间会报错
int c;
System.Out.println(c);
c = 100;
// int型变量所能表示的范围:
System.Out.println(Integer.MIN_VALUE);
System.Out.println(Integer.MAX_VALUE);
// 注意:在定义int性变量时,所赋值不能超过int的范围
int d = 12345678901234; // 编译时报错,初值超过了int的范围,int的包装类型为 Integer

 3.2.2长整型变量

int a = 10 ;
long b = 10 ; // long 定义的长整型变量
long c = 10L ; // 为了区分 int long 类型,一般建议: long类型变量的初始值之后加L或者l
// long 型变量所能表示的范围:这个数据范围远超过 int 的表示范围 . 足够绝大部分的工程场景使用 .
System . Out . println ( Long . MIN_VALUE ); //long的包装类型为Long
System . Out . println ( Long . MAX_VALUE ); //long的包装类型为Long

3.2.3 短整型变量

short a = 10 ;
// short 型变量所能表示的范围:
System . Out . println ( Short . MIN_VALUE );
System . Out . println ( Short . MAX_VALUE ); //short的包装类型为Short

 3.2.4 字节型变量

byte b = 10 ;
System . Out . println ( b );
// byte 型变量所能表示的范围:
System . Out . println ( Byte . MIN_VALUE );
System . Out . println ( Byte . MAX_VALUE );
注意事项:
1. byte 在任何系统下都占 1 个字节
2. byte 的范围是: -128 ~ 127
3. 字节的包装类型为 Byte

 3.2.5双精度浮点型 

double num = 1.1 ;
System . out . println ( num * num ); // 输出 1.21 吗?
// 执行结果
1.2100000000000002
Java , int 除以 int 的值仍然是 int( 会直接舍弃小数部分 ) 。如果想得到 0.5, 需要使用 double 类型计算 .
double a = 1.0 ;
double b = 2.0 ;
System . out . println ( a / b ); // 输出0.5
注意事项:
1. double 在任何系统下都占 8 个字节
2. 浮点数与整数在内存中的存储方式不同,不能单纯使用 的形式来计算
3. double 的包装类型为 Double

 3.2.6单精度浮点型

float num = 1.0f ; // 写作 1.0F 也可以
System . out . println ( num );
float 类型在 Java 中占四个字节 , 同样遵守 IEEE 754 标准 . 由于表示的数据精度范围较小 , 一般在工程上用到浮点数
都优先考虑 double, 不太推荐使用 float. float 的包装类型为 Float

3.2.7字符型变量 

char c1 = 'A' ; // 大写字母
char c2 = '1' ; // 数字字符
System . out . println ( c1 );
System . out . println ( c2 );
// 注意: java 中的字符可以存放整形
char c3 = ' ' ;
System . out . println ( c3 );
char 的包装类型为 Character

3.2.8布尔型变量 

布尔类型常用来表示真假,在现实生活中也是经常出现的,比如:隔壁同学和校花订婚了
大部分人第一反应就是:我 x ,真的假的?
boolean b = true ;
System . out . println ( b );
b = false ;
System . out . println ( b );
2. Java boolean 类型和 int 不能相互转换 , 不存在 1 表示 true, 0 表示 false 这样的用法 .

3.2.9类型转换 

Java 作为一个强类型编程语言 , 当不同类型之间的变量相互赋值的时候 , 会有教严格的校验 .
Java 中,当参与运算数据类型不一致时,就会进行类型转换。 Java 中类型转换主要分为两类:自动类型转换 (
) 和 强制类型转换 ( 显式 )
3.2.10 自动类型转换(隐式) 

3.2.10 自动类型转换(隐式) 

 自动类型转换即:代码不需要经过任何处理,在代码编译时,编译器会自动进行处理。特点:数据范围小的转为数据范围大的时会自动进行 

// 整型默认情况下是 int
  // 浮点型默认情况下是 double
int a = 100 ;
long b = 10L ;
b = a ; // a b 都是整形, a 的范围小, b 的范围大,当将 a 赋值给 b 时,编译器会自动将 a 提升为 long 类型,然后赋值
a = b ; // 编译报错, long 的范围比 int 范围大,会有数据丢失,不安全
float f = 3.14F ;
double d = 5.12 ;
d = f ; // 编译器会将 f 转换为 double ,然后进行赋值
f = d ; // double 表示数据范围大,直接将 float 交给 double 会有数据丢失,不安全
byte b1 = 100 ; // 编译通过, 100 没有超过 byte 的范围,编译器隐式将 100 转换为 byte
byte b2 = 257 ; // 编译失败, 257 超过了 byte 的数据范围,有数据丢失

3.2.11强制类型转换(显式)

强制类型转换:当进行操作时,代码需要经过一定的格式处理,不能自动完成。特点:数据范围大的到数据范围小的
int a = 10 ;
long b = 100L ;
b = a ; // int-->long ,数据范围由小到大,隐式转换
a = ( int ) b ; // long-->int, 数据范围由大到小,需要强转,否则编译失败
float f = 3.14F ;
double d = 5.12 ;
d = f ; // float-->double ,数据范围由小到大,隐式转换
f = ( float ) d ; // double-->float, 数据范围由大到小,需要强转,否则编译失败
a = d ; // 报错,类型不兼容
a = ( int ) d ; // int 没有 double 表示的数据范围大,需要强转,小数点之后全部丢弃
byte b1 = 100 ; // 100 默认为 int ,没有超过 byte 范围,隐式转换
byte b2 = ( byte ) 257 ; // 257 默认为 int ,超过 byte 范围,需要显示转换,否则报错
boolean flag = true ;
a = flag ; // 编译失败:类型不兼容
flag = a ; // 编译失败:类型不兼容

如果需要把范围大的类型赋值给范围小的, 需要强制类型转换, 但是可能精度丢失  

3.2.12类型提升

不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的。
1. int long 之间: int 会被提升为 long
int a = 10 ;
long b = 20 ;
int c = a + b ; // 编译出错 : a + b== int + long--> long + long 赋值给 int 时会丢失数据
long d = a + b ; // 编译成功: a + b==>int + long--->long + long 赋值给 long
2. byte byte 的运算
byte a = 10 ;
byte b = 20 ;
byte c = a + b ;
System . out . println ( c );
// 编译报错
Test . java : 5 : 错误 : 不兼容的类型 : int 转换到 byte 可能会有损失
byte c = a + b ;
^
原因:byte byte 都是相同类型 , 但是出现编译报错 . 原因是 , 虽然 a b 都是 byte, 但是计算 a + b 会先将 a
b 都提升成 int, 再进行计算 , 得到的结果也是 int, 这是赋给 c, 就会出现上述错误 .

在有些情况下,需要将字符串和整形数字之间进行转换:
1. int 转成 String
int num = 10 ;
// 方法 1
String str1 = num + "" ;
// 方法 2
String str2 = String . valueOf ( num );
2. String 转成 int
String str = "100" ;
int num = Integer . parseInt ( str );

四,运算符 

4.1 基本四则运算符:加减乘除模(+ - * / %)

int a = 20 ;
int b = 10 ;
System . out . println ( a + b ); // 30
System . out . println ( a - b ); // 10
System . out . println ( a * b ); // 200
System . out . println ( a / b ); // 2   int / int 结果还是int类型,而且会向下取整
System . out . println ( a % b ); // 0 模运算相当于数学中除法的余数

两侧操作数类型不一致时,向类型大的提升

 System.out.println(1+0.2); // +的左侧是int,右侧是double,在加之前int被提升为double

4.2 增量运算符 += -= *= %=

该种类型运算符操作完成后,会将操纵的结果赋值给左操作数。

 int a = 1;

a += 2 ; // 相当于 a = a + 2
System . out . println ( a ); // 输出 3
a -= 1 ; // 相当于 a = a - 1
System . out . println ( a ); // 输出 2
a *= 3 ; // 相当于 a = a * 3
System . out . println ( a ); // 输出 6
a /= 3 ; // 相当于 a = a / 3
System . out . println ( a ); // 输出 2
a %= 3 ; // 相当于 a = a % 2
System . out . println ( a ); // 输出 2

 4.3. 自增/自减运算符 ++ --

++是给变量的值+1--是给变量的值-1

int a = 1 ;
a ++ ; // 后置 ++ 表示给 a 的值加 1 ,此时 a 的值为 2
System . out . println ( a ); // 输出 3
System . out . println ( a ++ ); // 注意:后置 ++ 是先使用变量原来值,表示式结束时给变量 +1 ,因此输出2
++ a ; // 前置 ++ 表示给 a 的值加 1
System . out . println ( ++ a ); // 注意:前置 ++ 是先给变量 +1 ,然后使用变量中的值,因此输出 5
System . out . println ( a ); // 输出 5
// -- 操作符给操作 -1 ,与 ++ 含义类似

关系运算符

int a = 10 ;
int b = 20 ;
// 注意:在 Java = 表示赋值,要与数学中的含义区分
// Java == 表示相等
System . out . println ( a == b ); // false
System . out . println ( a != b ); // true
System . out . println ( a < b ); // true
System . out . println ( a > b ); // false
System . out . println ( a <= b ); // true
System . out . println ( a >= b ); // false

 4.4. 逻辑运算符(重点)

逻辑运算符主要有三个 : && || ! ,运算结果都是 boolean 类型。

 1. 逻辑与 &&

语法规则:表达式1 && 表达式2,左右表达式必须是boolean类型的结果。 相当于现实生活中的且,比如:如果是学生,并且 带有学生证 才可以享受半票。 两个表达式都为真,结果才是真,只要有一个是假,结果就是假。

2. 逻辑 ||

语法规则:表达式 1 || 表达式 2 ,左右表达式必须是 boolean 类型的结果。
相当于现实生活中的或,比如:买房子交钱时,全款 或者 按揭都可以,如果全款或者按揭,房子都是你的, 否则站一边去。
左右表达式至少有一个位真,则结果为真

 3. 逻辑非 !

语法规则: ! 表达式
真变假,假变真。
int a = 1 ;
System . out . println ( ! ( a == 1 )); // a == 1 true ,取个非就是 false
System . out . println ( ! ( a != 1 )); // a != 1 false ,取个非就是 true

 4.5. 位运算符

Java 中数据存储的最小单位是字节,而数据操作的最小单位是比特位 . 字节是最小的存储单单位,每个字节是由 8 个二 位运算符主要有四个: &   |   ~   ^ ,除 ~ 是一元运算符外,其余都是二元运算符。
位操作表示 按二进制位运算 . 计算机中都是使用二进制来表示数据的 (01 构成的序列 ), 按位运算就是在按照二进制位
的每一位依次进行计算

1. 按位与 &: 如果两个二进制位都是 1, 则结果为 1, 否则结果为 0.  

int a = 10 ;
int b = 20 ;
System . out . println ( a & b );
0

2. 按位或 |: 如果两个二进制位都是 0, 则结果为 0, 否则结果为 1.  

int a = 10 ;
int b = 20 ;
System . out . println ( a | b );
注意 : & | 的操作数为整数 (int, short, long, byte) 的时候 , 表示按位运算 , 当操作数为 boolean 的时候 , 表 示逻辑运算.
3. 按位取反 ~: 如果该位为 0 则转为 1, 如果该位为 1 则转为 0

int a = 0xf ;
System . out . printf ( "%x\n" , ~a )
0xf 表示 10 进制的 15, 也就是二进制的 1111
4. 按位异或 ^: 如果两个数字的二进制位相同 , 则结果为 0, 相异则结果为 1.

int a = 0x1 ;
int b = 0x2 ;
System . out . printf ( "%x\n" , a ^ b );
注意:如果两个数相同,则异或的结果为 0

 4.6. 条件运算符

条件运算符只有一个 :
表达式 1 ? 表达式 2 : 表达式 3
表达式 1 的值为 true , 整个表达式的值为 表达式 2 的值 ;
表达式 1 的值为 false , 整个表达式的值为 表达式 3 的值 .
也是 Java 中唯一的一个 三目运算符 , 是条件判断语句的简化写法

// 求两个整数的最大值
int a = 10 ;
int b = 20 ;
int max = a > b ? a : b ;


4.7. 运算符的优先级
在一条表达式中,各个运算符可以混合起来进行运算,但是运算符的优先级不同,比如: * / 的优先级要高于 +
- ,有些情况下稍不注意,可能就会造成很大的麻烦。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值