HELLO WORLD!!!
编写代码
-
文件后缀为.java
-
Hello.java
-
文件名与类名一致
public class Hello{ public static void main(String[] args){ System.out.print("Hello,World!"); } }
dos命令:
-
编译:javac Hello.java
-
运行class文件:java Hello
Java运行机制
-
编译型(翻译整本书,可以随时回溯,但不能实时更改)compile
-
解释型(翻译官一句一句翻译,随时应对更改)explain
-
java对两种类型都涉及
两种类型是翻译的时机不同(一开始就翻译完/边运行边翻译)
-
OS/C/C++使用编译型语言
-
网页(对速度要求不高)是解释型语言
.java-->.class-->jvm-->os
Java基础
注释(平时写代码必须加!!!)
-
单行注释
-
多行注释
-
文档注释
标识符
变量名
-
A/a/$/_可以开头
-
#%不可以随便加
-
标识符是大小写敏感的
数据类型
Java是强类型语言
-
所有变量必须先定义才能使用
-
安全性高
-
速度慢
类型
-
基本类型
-
整数类型
-
byte(1个字节):-128-127
-
short(2):-32768-32767
-
int(4):-2147483648-2147483647
-
long(8):
-
-
浮点类型
-
float(4)
-
double(8)
-
-
boolean类型
-
-
引用类型
-
类
-
接口
-
数组
-
public class Demo2 { public static void main(String[] args) { //八大基本数据类型primitive type //整数 int num3 = 10; byte num1 = 127; short num2 = 30; long num4 = 30L;//long类型最后要加L //浮点数 float num5 = 50.2546F;//float类型后面要加F double num6 = 3.1415726535897932384626435464; //字符类型 char work = 'k'; String namep = "wdd";//String不是关键词 //布尔值:yes/no boolean flag = true; boolean flag1 = false; } }
浮点数
-
浮点数float存在误差(有限,离散)
-
接近但是不等于
-
使用Bigdecimal类才是精确的
字符型
-
字符的本质是数字
-
转义字符
-
/t
-
/n
-
等
-
布尔型
-
使用if(flag){}而不使用if(flag==true)
类型转换
-
由于JAVA是强类型语言,所以运算时,需要用到类型转换
-
byte,short,char->int->long->float->double
-
避免内存溢出
-
强制转换 (类型)变量名 高---底
-
转换会造成内存溢出或精度问题!!! public class Demo4 { public static void main(String[] args) { //操作比较大的数的时候,注意溢出问题 //数字之间可以用下划线分割 int money = 10_000_00000; int years = 20; int totel = money * years; System.out.println(totel); long totel2 = money * years; System.out.println(totel2); //证明 两个int相乘得到结果后再转化为LONG,此时已经出问题了 long totel3 = money * ((long)years);//自动提升为long System.out.println(totel3); } }
-
-
自动类型转换 低----高
变量
-
每个变量必须声明其类型
-
java变量是程序中最基本的存储单元
-
变量包括:
-
变量名
-
变量类型
-
作用域
-
-
数据类型 变量名 = 值
类变量
-
static + 类型 +变量名
-
可以直接调用
实例变量
局部变量
-
在方法内
-
必须声明和初始化值
常量
-
常量名一般使用大写字符
-
常量值一旦定义便不可更改
-
final + 类型 + 变量名
命名规范
-
类成员变量:首字母小写和驼峰原则:lastName
-
局部变量:首字母小写和驼峰原则
-
常量:全大写和下划线
-
类名:首字母大写和驼峰原则
-
方法名:首字母小写和驼峰原则
运算符
-
算术运算符:+,-,*,/,%,++,--
-
赋值运算符 =
-
关系运算符:>,<,>=,<=,==,!=,instanceof
-
逻辑运算符:&&,||,!
-
位运算符:&,|,^,~,>>,<<,>>>
-
条件运算符?:
-
扩展赋值运算符:+=,-=,*=,/=
-
幂运算Math.pow(a,b) 表示 a^b
-
优先级()
包机制
-
本质就是文件夹
-
一般将域名倒置做包名 例如:com.baidu.www
JavaDoc
-
javadoc用于保存自己的API文档
Java流程控制
Scanner对象
-
Scanner类用于获取用户输入
-
next()
-
不能得到带有空格的字符串
-
只有输入有效字符后将其后面的空白作为分隔符
-
一定读取到有效字符后才可以结束输入
-
-
nextline()
-
以enter为结束符
-
可以获得空白
-
顺序结构
选择结构
-
if单选泽
-
if双选择
-
if多选择
-
嵌套的if
-
switch多选择结构
-
switch(expression){ case value: break; default; }
-
case穿透(指头铁不写break,所有case都走了一遍)
-
switch支持String类型了
-
String name = "我弟弟"; switch(name){ case "我弟弟": System.out.println("我弟弟"); break; default: System.out.println("搞咩啊"); }
-
循环结构
-
while循环(先判断后执行)
-
do-while循环(先执行后判断,至少执行一次)
-
for循环
-
for(初始化;布尔表达式;更新)
-
最有效最灵活的循环结构
-
循环前次数就确定了
-
-
用于数组的增强型for循环
-
int[] numbers = {1,2,3,4,5}; for (int x:numbers){ System.out.println(x); }
-
-
break跳出循环
-
continue跳出本次循环
-
goto
Java方法
-
方法是语句的集合,他们在一起执行一个功能
-
方法包含于类和对象中
-
方法在程序中被创建,在其他地方被引用
-
public static void main(String[] args) { int sum = add(1,2); System.out.println(sum); } public static int add(int a,int b){ return a+b; }
-
一个方法只完成一个功能,有利于我们后期的拓展
-
方法包含以下部分
-
方法体
-
如果有返回值,必须return
-
-
方法头
-
修饰符
-
返回值类型
-
方法名
-
参数类型
-
实参
-
形参
-
-
-
方法的重载
-
重载就是在一个类中,名称相同,但是形式参数类型不同
-
名称必须相同
-
参数列表必须不同
-
返回类型可以相同也可以不同
-
仅仅返回类型不同,不能叫做重载
-
命令行传参
-
有时候你希望运行一个程序时候再传递给他消息,这就要靠传递命令行参数给main()函数实现
可变参数
-
在方法声明中,在指定参数类型后加一个省略号
-
一个方法中只能存在一个可变参数,且可变参数放到最后
-
实质是传数组
递归
-
方法自己调用自己就是递归
数组
-
相同类型数据的有序集合
数组的声明
-
数组类型 + 名称
-
int[] nums;
-
int nums[];(知道就行,一般不用)
-
数组的创建
-
数组名 = new 对应方法;
-
nums = new int[10];
内存分析
-
堆
-
栈
-
方法区
-
静态初始化(创建+赋值)
-
动态初始化(使用new)
好家伙,感觉学了一天,但又感觉啥都没学,好像都会,又好像都不会
还是多写代码,任重而道远!