Java学习第二天
本文内容为本人学习内容,仅供参考,如内容有误,请斧正,谢谢!
Java程序的基本规则
- Java的类(文件)是Java程序的最小单位,代码写在Java类文件里,一个java项目往往包含若干个类文件
- Java类的文件名要跟类名一致,类名首字母要大写,使用驼峰命名法(如: HelloFisher ),扩展名是.java
- main方法是Java程序运行的入口,main方法的名称、参数、前面的修饰符都是固定的
- 每条(行)语句以分号结束
- 方法名、变量名、属性名都是以小写字母开头,也是使用驼峰命名方式
Java程序的组成成份
分隔符号
-
“ ; ” 分号。 语句结束的标志
-
" {} " 大括号。 成对出现,用在类、方法、判断和循环语句。把多条语句作为一个整体(代码块)
-
" () " 小括号。用于方法的定义和调用,以及运算表达式的优先级。
-
" [] " 方括号。 用于数组,通常在数组名字之后出现
-
" . " 圆点。 用于对象的属性或方法的调用。
-
" “” " 双引号。 用于字符串
-
" ‘’ ’ 单引号。 用于字符
-
" " 空格。 用于分割标识符以及关键字
标识符
标识符就是类、方法、属性、变量的名称。
命名规则:
1. 必须以字母、下划线(_)、美元符号($)开头
2. 除首字母之外可以用字母和数字以及下划线和美元符号
3. 不能跟关键字重名
4. 区分大小写
5. 不建议使用中文
关键字
Java中一些表示特定意义的单词叫关键字,Java的有如下关键字:
注释
注释是代码中用于帮助程序员理解或者记忆代码的内容;暂时不用的代码也可以注释掉。
注意 :注释的内容会被编译器忽略
单行注释
以//开头, 用于注释单行内容
快捷键: Ctrl + /
//打印欢迎信息
System.out.println("Hello CQ"); //每个语句以分号结束
多行注释
以/* 开头,*/ 结束, 用于注释多行内容
快捷键: Ctrl + Shift + /
/*
System.out.println("aaaaaaaaaa");
System.out.println("bbbbbbbbbbbbb");
System.out.println("cccccccccccc");
*/
文档注释
以/** 开头, */结束。 用于类,方法,它能导出为API文档
快捷输入方式: 输入/**, 然后回车
JDK API文档地址:
官方英文: https://docs.oracle.com/javase/8/docs/api/
中文: https://tool.oschina.net/apidocs/apidoc?api=jdk-zh
/**
* 这是学习Java的第一个类
*/
public class Hello {
/**
* 启动方法
* @param args 参数
*/
public static void main(String[] args) {
- IDEA导出文档注释为API文档
- 创建一个目录存放API文档。 比如:桌面上创建一个myapi目录
- 点击tools -> generate JavaDoc…
- 设置
- 点击ok, 导出文档
变量
方便访问内存中的数据而起的一个程序员容易记忆和理解的一个名字。
比如饭店包间,如果用编号608, 606(类似内存地址), 为了方便理解记忆,用地名朝天门(608),洪崖洞(606), 朝天门和洪崖洞在程序里称为变量
定义变量
语法: 类型 变量名;
类型 变量名 = 初始化的值;
类型 变量名, 变量名;
String stuName = "张三"; //=是赋值的意思, 把张三字符串赋给stuName这个变量
int stuAge = 22;
int i; //定义变量,不赋值(没有初始化)
int m, n;//一次定义多个变量,用逗号分割,多个变量必须是相同类型
int a = 3, b = 2; //一次定义多个变量,也可以在定义的同时赋值
变量初始化
可以在定义变量的时候初始化,也可以先定义再初始化
变量的赋值和使用
System.out.println("学生的姓名:" + stuName); //+字符串的拼接
System.out.println("学生的年龄:" + stuAge); //字符串和数字相加,也是拼接
System.out.println(i + j); //两个数字相加, 是加法运算
int k;
k = i; //给变量赋值可以用另外一个变量
k = 3 + 2; //变量赋值还可以用表达式
k = i - j; //变量赋值可以变量参与的表达式
System.out.println(k); //-2, int类型叫整形, 包括正整数,0, 负整数
注意
- 同一个作用域不能重复定义变量
int i; //定义变量,不赋值(没有初始化)
i = 8;
//在同一个作用域(同一个大括号内)不能重复定义同名的变量
// int i = 5;
- 变量在使用前必须初始化(赋值)
int c;
//变量在使用前必须要先初始化(赋值)
// System.out.println(c);
Java的基本数据类型
整形
- byte
一个字节长度, 取值范围-2 7 ~ 27 -1 (-128 ~ 127)
byte b1 = 10;
System.out.println(b1);
// byte b2 = -129; //超过范围,报编译异常
// byte b3 = 128; //超过范围,报编译异常
-
short
占两个字节长度, 取值范围-215 ~ 215 -1 , (-32768 ~ 32767)
short s1 = -100;
System.out.println(s1);
// short s2 = -32769; //超过范围,报编译异常
// short s3 = 32768; //超过范围,报编译异常
-
int
占四个字节长度, 取值范围-231 ~ 231 , (-2147483648 ~ 2147483647)
int的十进制数只有10位长度,不能存放手机号码的。
-
long
占八个字节, 取值范围-263 ~ 263-1, 19位的十进制数
注意:给long类型变量赋值,数字后面要加L(尤其是超过int范围必须要加)
long l1 = 100L; System.out.println(l1); //给long赋值的时候,如果数字超过int范围,必须要加L, 如果没超过int可加可不加 long l2 = 2147483648L; System.out.println(l2); //当前时间的时间戳(相对于1970.1.1 0时过去了多少毫秒) System.out.println(System.currentTimeMillis());
注意: 给整数赋值可以用十进制,八进制,十六进制
// java里可以用十进制, 八进制,十六进制的数字给整形赋值
int n = 100; //十进制赋值
System.out.println(n);
n = 0144; //八进制数赋值, 以0开头是八进制
System.out.println(n);
n = 0x64; //十六进制赋值, 以0x开头是十六进制
System.out.println(n);
浮点型(小数)
-
float
占4个字节
float f1 = 3.1F; //java里面直接写一个小数,默认为double System.out.println(f1); float f2 = 2.5F; System.out.println(f1 * f2);
-
double
占8个字节
double d1 = 3.1415; System.out.println(d1);
注意:java里浮点数运算可能会损失精度(结果不精确),在实际项目中如果用到小数的运算(比如财务系统),建议用BigDecimal
字符类型(char)
字符用16位的unicode编码,所以可以表示各国语言文字。
- 字符的表示方式:
-
字符用单引号括起来。
-
用unicode编码,格式’\uxxxx’。中文汉字在unicode中的范围4E00 ~ 9FA5
-
用转义符表示特殊字符
\" | 双引号 |
---|---|
\’ | 单引号 |
\n | 换行 |
\r | 回车 |
\t | 制表符 |
\\ | 反斜杠 |
char c1 = 'a';
System.out.println(c1);
char c2 = '中'; //因为是用的unicode,所以能表示任何语言的字符
System.out.println(c2);
char c3 = '\u4E01'; //用unicode方式描述一个字符
System.out.println(c3); //丁
System.out.println("某某说:\"你好\"。");
System.out.println("\n"); //换行
System.out.println("\r"); //回车
System.out.println("\t"); //制表符(tab键空出来的位置,4个空格)
System.out.println("\'"); //单引号
System.out.println("\\"); // 反斜杠
- 用数字来表示字符
char a = 97; //常见的英文字符都对应一个数字编码,所以可以用数字给char类型赋值
System.out.println(a);
ascii码表规定每个字符对应的数字:
布尔类型(boolean)
占1位长度,只有两种值: true 和 false, 不能用数字给boolean类型赋值。
布尔类型一般用于判断或循环语句判断条件
boolean b2 = true;
boolean b3 = false;
System.out.println(b2);
System.out.println(b3);
基本类型相互转换
自动转换
- char不能自动转为short
- byte不能自动转为char
- 任何的基本类型都可以跟字符串进行拼接
byte by1 = 10;
short s1 = by1; //by1自动转换为short, 赋给s1变量
int i1 = s1; //自动转换short为int
System.out.println(i1);
char c1 = 'a';
i1 = c1; //自动转char为int
System.out.println(i1);
long l1 = i1; //自动转换int为long
System.out.println(l1);
float f1 = l1; //自动转换long为float
System.out.println(f1);//结果为:97.0
double d1 = f1; //自动转换float为double
System.out.println(d1);
强制转换
- 长度大的数据类型转小的类型不能自动转换,要用强制转换
- 小数转整数,会去掉小数
- 如果强转超过类型所能表示的范围,可能会出现不可预知的结果
double d2 = 3.14;
float f2 = (float) d2; //变量前面加一对小括号,小括号里面是一个类型,这种就叫强制类型转换
System.out.println(f2);
long l2 = (long) f2; //浮点数强制转换为整数,直接去掉小数部分
System.out.println(l2);
int i2 = (int) l2;
char c2 = (char) i2;
System.out.println(c2);
short s2 = (short) i2;
byte b2 = (byte) s2;
int i3 = 168;
//超过目标类型范围的强制类型转换要谨慎,可能出现不可预知的结果
byte b3 = (byte) i3;
System.out.println(b3);//结果是 -88
控制台输入内容
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String s = scanner.next(); //等待用户从控制台输入字符串
System.out.println(s);
System.out.println("请输入一个整数:");
int i = scanner.nextInt(); //等待用户从控制台输入整数
System.out.println(i);