第一个Java程序
package Practice;//Tips:Eclipse创建类的时候必须要有package,用于区分同名的类
public class Hello {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
注释
//单行注释
/* 多行注释 */
/** @文档注释(能够被识别) */
一、标识符
什么是标识符
Java中所有的变量名、类名和方法名都叫做标识符,标识符就是给类、方法、变量起的名字。
标识符是以字母、下划线、美元符号开头,后面可以跟字母、下划线、美元符号、数字的一个字符序列。
命名规则
以字母、下划线( _ )、美元符号( $ )开头
由字母、下划线( _ )、美元符号( $ )、数字组成
不能是关键字
区分大小写,例:myName 和 myname 是两个不同的标识符
命名规范
起名字要见名知意,可以使用对应意思的英语单词来命名。
在编程中,我们最常用的命名方式有驼峰命名法等。
小驼峰命名法
适用于方法、变量等;
当标识符是一个单词的时候,全部小写,例:name、sex、student
当标识符由多个单词组成时,第一个单词小写,其他单词首字母大写,例:firstName
大驼峰命名法
适用于类名等;
当标识符是一个单词的时候,单词首字母大写,例:Student、Teacher
当标识符由多个单词组成时,每个单词的首字母都要大写,例:GoodStudent、BadStudnet
二、关键字
什么是关键字
关键字就是在编程语言中被赋予了特定涵义的英文单词,Java 中一共有 53 个关键字。
特点
全部字母都是小写
在常用的代码编辑器中,关键字有特殊的颜色标记
不能作为用户标识符使用
tips:String不是一个关键字,它是一个类。
三、字节
bit(位)
计算机内部 数据储存 的最小单元。 eg:10110101是一个八位(bit)的二进制数
byte(字节)
计算机中 数据处理 的基本单位。 1B = 8 bit
character(字符)
计算机中使用的字母、数字和符号。
1KB = 1024 B (2^10) 1MB= 1024 KB 1GB= 1024 MB
电脑32位和64位的区别
32位的电脑只支持32位的操作系统,支持4GB的内存。
64位的电脑支持32位或者64位的操作系统,能支持128GB的内存。
四、数据类型
Java是一门强类型语言,所有变量都必须先定义后使用。
Java的数据类型分为两类:基本数据类型和引用数据类型。
基本数据类型(primitive type)
引用数据类型(reference type)
五、数据类型拓展
整型
二进制 无表示;
八进制度 int a = 010;
十六进制 int a = 0x10;
浮点型
避免使用浮点型进行比较!!!!!
案例
package Practice;
public class Hello {
public static void main(String[] args) {
//如何表示银行业务?
float f = 0.1f;//必须要有f
double d = 1.0/10;
System.out.println(f);//0.1
System.out.println(d);//0.1
System.out.println(f==d);//false
float d1 = 12345789f;
float d2 = d1 + 1;
System.out.println(d1);//
System.out.println(d2);
System.out.println(d1 == d2);//false
float d3 = 123457891f;
float d4 = d3 + 1;
System.out.println(d3);
System.out.println(d4);
System.out.println(d3 == d4);//ture
}
}
字符型
所有的字符本质都是数字!!!
char c1 = 'A';
char c2 = '言';
System.out.println(c1);
System.out.println((int)c1);//65
System.out.println(c2);
System.out.println((int)c2);//35328
char c3 = '\u0061';
System.out.println(c3);//a
Unicode(统一码)
它为每种语言中的 每个字符 设定了 统一并且唯一 的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
编码范围:U0000 ~ UFFFF (十六进制表示)
统一码中包含ASCII码,统一码的 '\u0000' ~ '\u007F' 对应ACSII中全部128个字符。
ASCII码(美国标准信息交换码)
大多数计算机采用ASCII码,它是表示所有大小写字母、数字、标点符号和控制字符的7位编码方案。共定义了128个字符。
String a = new String("hello word");
String b = new String("hello word");
System.out.println(a==b)//false
String a1 = "hello word";
String b1 = "hello word";
System.out.println(a1==b1);//true
六、类型转换
不同类型的数据进行运算,必须先转换为同一类型的数据,再进行运算。
byte ---> char ---> short --->int --->long --->float --->double
低----------------------------------------------------------------->高
强制类型转换
从 高类型 转换到 低类型。
自动类型转换
从 低类型 转换到 高类型。
package Practice;
public class Exercise {
public static void main(String[] args) {
//强制类型转换
int a = 127;
byte b = (byte)a;
System.out.println(b); //127
int a1 = 128; //内存溢出
byte b1 = (byte)a1;
System.out.println(b1);//-128
--------------------------------------------------------------------
int n = 10_0000_0000;
int m = 20;
int total1 = n * m;
long total2 = n * m;//先得出int的结果,再转换为long
long total3 = n * (long)m;
System.out.println(total1);//-1474836480
System.out.println(total2);//-1474836480
System.out.println(total3);//20000000000
}
//只需要转换其中一个数据的类型即可,total会自动按照n和m中较高类型的输出结果
//如果是byte,short,char的运算,会先自动转换为int型再运算
}
七、变量
定义
可以变化的量,主要有三要素(变量名,变量类型,变量作用域)。
命名规范
类成员变量名、局部变量名、方法名:首字母小写+驼峰原则 niceGirl
类名:首字母大写+驼峰原则 NiceGirl
八、常量
定义
一旦初始化,就不会改变的量。
命名规范
大写字母+下划线 NICE_GIRL
九、运算符
算术运算符:+ , - , * , / , % , ++ ,--
赋值运算符:=
关系运算符:> , < , >= ,<= , == , != , instanceof
逻辑运算符:&& , || ,!
位 运算符:& , | ,^(异或) , ~(取反) , >> , <<
条件运算符:?: x ?: y,z如果 x 为 true,则返回 y ;否则,返回 z 。
拓展运算符:+= , -= ,*= ,/=
package Practice;
public class Exercise {
public static void main(String[] args) {
int a = 1;
System.out.println(a++);
System.out.println(++a);
//a++ 执行完该行代码后,再自增
//++a 先自增,再执行这一段代码
}
}
字符串连接符+
package Practice;
public class Exercise {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println(a + b + " really ");//30 really
//如果字符串在后面,会先对a+b进行运算,再输出字符串
System.out.println(a + " really " + b);//10 really 20
System.out.println(" really "+ a + b);// really 1020
//如果字符串在前面或中间,会将a和b转换为String类型,再拼接输出
}
}
优先级
( )的优先级最高;
十、包机制
什么是包机制
用于区分类名的命名空间。
命名规范
一般使用倒置的公司域名为package命名
Tips:同一个文件里的两个包中的类名不能重复
十一、JavaDoc生成文档
作用
用于生成自己的API文档。
参数信息
package ...
import ...
/**
*@author 作者名
*@version 版本号
*@since 需要使用的最早版本的jdk版本
*@param 参数名
*@return 返回值情况
*@throws 抛出异常情况
*/
十二、Scanner对象
作用
一种可以实现程序和人的交互的工具类,通过Scanner对象获取用户的输入。
和C语言中的scanf作用类似。
基本语法
Sccaner 对象名 = new Sccaner(System.in);
使用说明
先通过使用hasNext( )或hasNextLine( )方法判断用户是否输入数据。
再通过Sccaner工具类中的next( )或nextLine( )方法获取输入的字符串。
最后使用Sccaner对象名.close()
next()方法无法得到带空格的字符串,以空白符作为结束,会自动去除有效字符前的空白符。
nextLine()方法可以获得空格,以Enter键作为结束。
案例
package com.Irvine.Scanner;
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); //创建一个扫描器对象
if(scanner.hasNext()){ //判断用户是否在键盘上输入了数据
String str = scanner.next(); //接受用户输入的数据并存在str中
System.out.println("Output: "+ str);
}
scanner.close(); //关闭扫描器,以防浪费内存
}
}
package com.Irvine.Scanner;
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); //创建一个扫描器对象
if(scanner.hasNextLine()){ //判断用户是否在键盘上输入了数据
String str = scanner.nextLine(); //接受用户输入的数据并存在str中
System.out.println("Output: "+ str);
}
scanner.close(); //关闭扫描器,以防浪费内存
}
}
package com.Irvine.Scanner;
import java.util.Scanner;
public class Demo03 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int i = 0;
float f = 0.0f;
if(scanner.hasNextInt()){
i = scanner.nextInt();
System.out.println("这是一个整数" + i);
} else{
System.out.println("这不是一个整数");
}
if(scanner.hasNextFloat()){
f = scanner.nextFloat();
System.out.println("这是一个小数" + f);
} else{
System.out.println("这不是一个小数");
}
}
}
package com.Irvine.Scanner;
import java.util.Scanner;
public class Demo04 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = 0;
double sum = 0;
while(scanner.hasNextDouble()){
double x = scanner.nextDouble();
n++;
sum += x;
System.out.println("输入了第"+n+"个数据"+x);
}
System.out.println(n+"个数据的总和为"+ sum);
System.out.println("数据的平均值为"+ sum/n);
}
}
十三、分支与循环结构
分支结构
if单选泽,if-else双选择,if-else...if-else多选择, switch
循环结构
for,while,do...while
while和do while的区别
while是先判断后执行。
do...while是先执行后判断,保证至少有一次循环被执行。
增强for循环
作用
主要用于遍历数组和集合。
格式
for(声明语句:表达式){ 代码句子; }
声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型一致。
表达式:要访问的数组名/返回值是数组的方法。
声明语句
package com.Irvine.Struct;
public class strengthFor {
public static void main(String[] args) {
int[] num = {10,20,30,40,50};
for(int i:num){
System.out.print(i + "\t");
}
}
}
十四、控制流程语句
break
终止整个语句块{ }的执行,终止整层循环。
continue
跳过某个循环语块的某一次执行,终止一次循环。
return
直接结束整个方法。