java的基础语法
/*
数据类型:
java是一个强类型的语言,数据类型明确
计算机中基本的存储单位: 字节
最小单位: 比特位
1byte = 8bit
基本数据类型 : 4类八种
整型
字节型 byte 1字节=8位 2^8->[-128,127]
短整型 short 2字节=16位 2^16->[-32768,32767]
整型 int 4字节=32位 正负21亿
长整型 long 8字节=64位 非常大
因为整数字面常量值默认int类型
long类型的数据,需要在数据的后面添加L|l,推荐使用大写的L
重要: int
浮点型:
单精度 float 4个字节 小数点后7位左右
双精度 double 8个字节 小数点后15位左右
浮点类型的字面常量值为double
表示一个float类型的数据,在数据的后面添加f|F
如果浮点类型进行运算,可能会不精确
重要: double
字符型
char 2个字节
就是用来表示一个字符
表现形式:
1. ''中包裹单个字符
2.0~65535之间的整数表示某个字符 UNicode字符集
注意:
char类型参与运算,先转为十进制的整数,再运算
布尔型
boolean 1bit true|false
引用数据类型 : 类 接口 数组
*/
public class Day02{
public static void main(String[] args){
//byte
byate b = -128;
System.out.println(b);
//short
short sal = 30000;
System.out.println(sal);
//long
long l = 100000000000l
System.out.println(l);
//double
double d1 = 123.321231456;
System.out.println(d1);
//float
float f = 0.123456789;
System.out.println(f);
char c1 = 'a';
char c2 = '1';
char c3 = ' ';
char c4 = '强';
char c5 = 97;
System.out.println(ch1);
System.out.println(ch2);
System.out.println(ch3);
System.out.println(ch4);
System.out.println(ch5);
//boolean
boolean flag = true;
flag = false;
System.out.println(flage);
}
}
整数类型
整数型用来存储整数数值,即没有小数部分的数值。可以是正数,也可以是负数。整数数据在Java程序中有3种表示形式,分别为十进制、八进制和十六进制。
/*
数值型的表现形式(了解)
整数:
进制: 满几进一
二进制 : 由0~1组成 由0b|0B开头
八进制 : 由0~7组成 由0开头
十进制 : 默认
十六进制 : 由0~9|a~f组合而成(不区分大小写) 由0x|0X开头
其他进制转为十进制:
从最后一位数开始*当前进组^(次方从0开始每次+1),最后拿到每一位数的计算结果求和
十进制转为其他进制:
把十进制的数据,想要转为几进制,就不停的除以几,最后得到结果为0,看余数,从下往上看
浮点类型:
1)小数0.几,整数为0,0可以省略 0.15->.15
2) 科学计数法 e|E 代表10 e正数n -> *10^n e负数正数n -> /10^n
1.23e3->1.23*10^3
1.23e-3->1.23/10^3
练习: 520转为2进制,8进制,16进制的结果
*/
public class Day02{
public static void main(String[] args){
System.out.println(0B10);
System.out.println(010);
System.out.println(0x15);
System.out.println(0115); //77
System.out.println(0b1100); //12
System.out.println(0.15);
System.out.println(.15);
System.out.println(1.23e3);
System.out.println(1.23e-3);
}
}
整型数据根据它所占内容大小的不同可分为4种类型。
数据类型 | 内存 |
---|---|
byte | 8位 |
short | 16位 |
int | 32位 |
long | 64位 |
浮点类型
数据类型 | 内存 |
---|---|
float | 32位 |
double | 64位 |
字符类型
字符类型用于存储单个字符,占用16位(两个字节)的内存空间。在定义字符型变量时,要以单引号表示。使用char关键字可定义字符变量。
数据类型 | 内存 |
---|---|
char | 16位 |
布尔类型
布尔类型又称逻辑类型,通过关键字boolean来定义布尔类型变量,只有只有true和false两个取值,分别代表布尔逻辑中的“真”和“假”。布尔类型通常被用在流程控制中作为判断条件。
关键字 :
Java关键字是Java语言保留供内部使用的特殊单词,已经在使用 public公共的 class
关键字会变色
关键字全部小写
保留字 :
是Java语言保留供内部使用的特殊单词,但是现在还没有被使用,所以叫做保留 goto const
注意: 关键字和保留字都不能被使用
标识符:
就是给类,接口,方法,变量等起名字的字符序列。一切起名字地方的这个名字就是标识符
标识符得到命名规则 : 必须遵守不遵守就报错
组成: 只能有字母,数字,下划线_,美元符号$任意组合而成,但是数字不能开头
严格区分大小写
关键字与保留字不能作为标识符使用
关键字 :
Java关键字是Java语言保留供内部使用的特殊单词,已经在使用 public公共的 class
关键字会变色
关键字全部小写
保留字 :
是Java语言保留供内部使用的特殊单词,但是现在还没有被使用,所以叫做保留 goto const
注意: 关键字和保留字都不能被使用
标识符的命名规范 : 应该遵守,但是不遵守不报错
见名知意
驼峰命名原则
包(文件夹) : 全部小写 层级之间使用.连接 shang.hai -> shang文件夹中存在一个hai文件夹
类名|接口名 : 每个单词首字母大写 ShangHai
方法名|变量名 : 第一个单词全部小写,第二个单词首字母大写 shangHai
常量名 : 全部大写,每个单词之间使用_连接 SHANG_HAI
关键字
关键字 | 含义 |
---|---|
abstract | 抽象类或方法 |
assert | 用来查找内部程序错误 |
break | 跳出一个switch或循环 |
byte | 8位整数类型 |
case | switch的一个分支 |
catch | 捕获异常的try块子句 |
class | 定义一个类类型 |
continue | 在循环末尾继续 |
default | switch的缺省语句 |
do | do/while循环最前面的语句 |
double | 双精度浮点数类型 |
else | if语句的else子句 |
enum | 枚举类型 |
extends | 定义一个类的父类 |
final | 一个常量,或不能覆盖的一个类或方法 |
finally | try块中总会执行的部分 |
float | 单精度浮点数类型 |
for | 一个循环类型 |
if | 一个条件语句 |
implements | 定义一个类实现的接口 |
import | 导入一个包 |
instanceof | 测试一个对象是否是某个类的实例 |
int | 32位整型数 |
interface | 接口,一种抽象类型,仅有方法和常量的定义 |
long | 64位长整数型 |
native | 由宿主系统实现的一个方法 |
new | 分配新的类实例 |
null | 一个空引用 |
package | 包含类的一个包 |
private | 表示私有字段,或者方法等,只能从类内部访问 |
protected | 表示保护类型字段 |
public | 表示共有属性或者方法 |
return | 从一个方法中返回 |
short | 16位整数类型 |
static | 这个特性是这个类特有的,而不属于这个类的对象 |
strictfp | 对浮点数计算使用严格的规则 |
super | 超类对象或构造函数 |
switch | 选择语句 |
synchronized | 对线程而言是原子的方法或代码块 |
this | 当前类的一个方法或构造函数的隐含参数 |
throw | 抛出一个异常 |
throws | 一个方法可能抛出的异常 |
transient | 标志非永久性的数据 |
try | 捕获异常的代码块 |
void | 标记方法不返回任何值 |
volatile | 标记字段可能会被多个线程同时访问,而不做同步 |
while | 一种循环 |
变量
/*
变量: 可变的量 存储单个数据
在java程序执行过程中,其值可以发生改变的量
相当于造盒子,盒子就是变量 盒子的名字就是变量名 盒子中存储的数据就是变量值
停车位 位置是变量 停车位的编号就是变量名 车就是数据
一块内存空间 空间就是变量 空间中放的数据就是变量值 根据存储数据为空间起名字->变量名
java中定义一个变量,就是在内存中开辟一块空间,用来存储指定类型的数据
空间的大小由数据决定
变量 : 指的是一个块空间,作用就是为了存储数据
数据类型: 是数据就存储对应的数据类型,不同的数据类型代表不同的内存空间
整数int double小数 字符类型char 字符串String"" boolean布尔
定义:
声明的同时赋值
数据类型 变量名 = 赋值;
先声明后赋值
数据类型 变量名; 声明
变量名 = 赋值; 赋值
定义变量的注意事项:
变量的名字 : 标识符的命名规则|规范
变量的类型 : 根据要存储的变量值进行选择
变量的值 : 与变量的类型保持一致
注意: 变量可以赋值为一个数据值,可以赋值为一个表达式,但是都是最终得到一个结果数据然后才能赋值给变量
一条语句结束必须添加;
*/
public class VariableDemo04{
public static void main(String[] args){
//声明一个变量,用来存储学生的年龄 18
int age = 18;
System.out.println(age); //打印一个名字叫做age的变量空间中存储的数据值
//声明 一个变量存储学生的名字
String name;
//名字为张三
name="张三";
System.out.println(name);
//张三改名为李小龙
name = "李小龙";
System.out.println(name);
//同时声明多个变量
int x, y ,z;
x = 1;
y=z=2;
System.out.println(x);
System.out.println(y);
System.out.println(z);
//定义了char类型的变量
char ch1='a',ch2='b';
System.out.println(ch1);
System.out.println(ch2);
}
}
转义字符
所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加""来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。
字符表
所有的转义字符和所对应的意义:
转义字符 | 意义 | ASCII码值(十进制) |
---|---|---|
\a | 响铃(BEL) | 007 |
\b | 退格(BS) ,将当前位置移到前一列 | 008 |
\f | 换页(FF),将当前位置移到下页开头 | 012 |
\n | 换行(LF) ,将当前位置移到下一行开头 | 010 |
\r | 回车(CR) ,将当前位置移到本行开头 | 013 |
\t | 水平制表(HT) (跳到下一个TAB位置) | 009 |
\v | 垂直制表(VT) | 011 |
\ | 代表一个反斜线字符’’’ | 092 |
’ | 代表一个单引号(撇号)字符 | 039 |
" | 代表一个双引号字符 | 034 |
? | 代表一个问号 | 063 |
\0 | 空字符(NUL) | 000 |
\ddd | 1到3位八进制数所代表的任意字符 | 三位八进制 |
\xhh | 十六进制所代表的任意字符 | 十六进制 |
注意:
1. 区分,斜杠:"/" 与 反斜杠:"" ,此处不可互换
2. \xhh 十六进制转义不限制字符个数 ‘\x000000000000F’ == ‘\xF’
运算符是一些特殊的符号,主要用于数学函数、一些类型的赋值语句和逻辑比较方面。
赋值运算符
赋值运算符以符号“=”表示,它是一个二元运算符(对两个操作数作处理),其功能是将右方操作数所含的值赋给左方的操作数。
例如:
int a = 100;
算术运算符
运算符 | 说明 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取余数 |
自增和自减运算符
自增和自减是单目运算符,可以放在操作元之前,也可以放在操作元之后。操作元必须是一个整型或浮点型变量。自增、自减运算符的作用是使变量的值增1或减1。放在操作元前面的自增、自减运算符,会先将变量的值加1或减1,然后再使该变量参与表达式的运算。放在操作元后面的自增、自减运算符,会先使变量参与表达式的运算,然后再将该变量的值加1或减1。
例如:
假设a=5
b=++a; //先将a的值加1,然后赋值给b,此时a的值为6,b的值为6
b=a++; //先将a的值赋值给b,再将a的值变为6,此时a的值为6,b的值为5
比较运算符
比较运算符属于二元运算符,用于程序中的变量之间,变量和自变量之间以及其他类型的信息之间的比较。比较运算符的运算结果是boolean型。当运算符对应的关系成立时,运算的结果为true,否则为false。比较运算符共有6个,通常作为判断的依据用于条件语句中。
运算符 | 说明 |
---|---|
> | 比较左方是否大于右方 |
< | 比较左方是否小于右方 |
== | 比较左方是否等于右方 |
> = | 比较左方是否大于等于右方 |
<= | 比较左方是否小于等于右方 |
!= | 比较左方是否不等于右方 |
逻辑运算符
运算符 | 作用 |
---|---|
&& | 逻辑与 |
|| | 逻辑或 |
! | 逻辑非 |
Java Scanner 类
java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。
下面是创建 Scanner 对象的基本语法:
Scanner s = new Scanner(System.in);
接下来我们演示一个最简单的数据输入,并通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据:
使用 next 方法:
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// 从键盘接收数据
// next方式接收字符串
System.out.println("next方式接收:");
// 判断是否还有输入
if (scan.hasNext()) {
String str1 = scan.next();
System.out.println("输入的数据为:" + str1);
}
scan.close();
}
}
执行以上程序输出结果为:
$ javac ScannerDemo.java
$ java ScannerDemo
next方式接收:
runoob com
输入的数据为:runoob
可以看到 com 字符串并未输出,接下来我们看 nextLine。
使用 nextLine 方法:
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// 从键盘接收数据
// nextLine方式接收字符串
System.out.println("nextLine方式接收:");
// 判断是否还有输入
if (scan.hasNextLine()) {
String str2 = scan.nextLine();
System.out.println("输入的数据为:" + str2);
}
scan.close();
}
}
执行以上程序输出结果为:
$ javac ScannerDemo.java
$ java ScannerDemo
nextLine方式接收:
runoob com
输入的数据为:runoob com
可以看到 com 字符串输出。
next() 与 nextLine() 区别
next():
- 1、一定要读取到有效字符后才可以结束输入。
- 2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
- 3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
- next() 不能得到带有空格的字符串。
nextLine():
- 1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
- 2、可以获得空白。
如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取:
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// 从键盘接收数据
int i = 0;
float f = 0.0f;
System.out.print("输入整数:");
if (scan.hasNextInt()) {
// 判断输入的是否是整数
i = scan.nextInt();
// 接收整数
System.out.println("整数数据:" + i);
} else {
// 输入错误的信息
System.out.println("输入的不是整数!");
}
System.out.print("输入小数:");
if (scan.hasNextFloat()) {
// 判断输入的是否是小数
f = scan.nextFloat();
// 接收小数
System.out.println("小数数据:" + f);
} else {
// 输入错误的信息
System.out.println("输入的不是小数!");
}
scan.close();
}
}
执行以上程序输出结果为:
$ javac ScannerDemo.java
$ java ScannerDemo
输入整数:12
整数数据:12
输入小数:1.2
小数数据:1.2
以下实例我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果:
import java.util.Scanner;
class RunoobTest {
public static void main(String[] args) {
System.out.println("请输入数字:");
Scanner scan = new Scanner(System.in);
double sum = 0;
int m = 0;
while (scan.hasNextDouble()) {
double x = scan.nextDouble();
m = m + 1;
sum = sum + x;
}
System.out.println(m + "个数的和为" + sum);
System.out.println(m + "个数的平均值是" + (sum / m));
scan.close();
}
}
执行以上程序输出结果为(输入非数字来结束输入):
$ javac ScannerDemo.java
$ java ScannerDemo
请输入数字:
12
23
15
21.4
end
4个数的和为71.4
4个数的平均值是17.85
Java之父“高司令”
的大名,很多人肯定会联想到地道战经典对白“高实在是高”,不好意思,那是胡司令,这个高司令是个高鼻子、大胡子、金头发的老外,但作为Java编程语言的共同创始人之一,中国的程序员们在膜拜这位公认的Java之父同时,也亲昵的用中文谐音“高司令”来表达出对他的多重敬意。
他是比尔盖茨的噩梦,他用他的大胡子让盖茨的微笑变得十分勉强,他是技术的先驱,他技术成果覆盖了100亿台设备,除了苹果,没有什么手机不用向他致敬;他就是高斯林,Java的缔造者