Java语言特点(跨平台★):一次编译到处执行
Java的初始工作
一、下载jdk
JDK java开发工具包 java语言开发环境
JRE Java程序运行环境 只需要运行程序时可以指安装JRE
JVM Java的程序虚拟机
二、配置环境(环境变量)
环境建立
右键(此电脑)---属性---高级系统设置--环境变量
1.JAVA HOME:JDK的根路径
2.Path:系统的执行文件所在的地址
查看版本 win+r cmd (java -version)
版本正确则设置成功
手撕HelloWorld
首先创建一个.java文件
以笔记本为软件打开,打开后写入一下代码
public class Hello{
public static void main(String[] args){
System.out.println("java so easy");
}
}
然后继续win+r
程序运行过程★★ 源码--javac--字节码文件---java---系统指令
运行后会出现字节码文件
直接运行即可手撕Hello World
基于IDEA,创建Java文件
1.创建Java项目
源文件夹 src
包,包的创建
我们的主程序在我们创建的包的里面
尽量使用驼峰命名法(单词首字母大写)
包名(package)全部小写,类名(class)首字母大写 常量名全部大写
注释
单行注释(//)快捷键为Ctrl+/。
多行注释 ( /*到*/ ) 在这两个之间全是注释内容
/**
* 文档注释
*/
class 类名{} 类结构
一个.java文件中只能有一个publice 外部类
pubulic类必须和文件名一样
内部一些专有名词
关键字
关键字:开发语言中已经内定的一些单词,并且赋予了特殊的作用,开发人员不能随意的使用,或只能按照指定的语法进行使用。
关键子在Java中一般所有的字母都是小写。
标识符
标识符:变量名 类名 方法名 参数名 常量名都属于标识符
标识符命名规范:Java中标识符只能由字符,数字,$和_组成,首字符不能是数字(中文在语法上通过,但业内暂时不允许),标识符不能是关键字,可以包含
所有的标识符都要见名知意
变量
变量:在程序运行阶段可以发生变化的量
变量赋值 初始化:给变量第一次赋值就叫初始化
未初始化:从来没有给变量赋值 未初始化的变量是不可使用的
常量
常量:在程序运行阶段,不可以发生变化的量
final进行定义
数据类型
数据类型分为 基本数据类型 引用类型
基本数据类型包括
整数型:
byte:1个字节。 -2^7~2^7-1 -128~127,256个数。(负数二进制算值要反码加1)
short:2个字节。-2^15~2^15-1 -32768 ~ 32767之间。65535个状态。
int:4个字节。-2^31~2^31-1 -2147483648 ~2147483647之间,大约40亿个状态。使用最频繁。(默认类型)
long:-2^63~2^63-1 8个字节。更大。一般用于记录时间每毫秒+1
注意:整型常量默认是int类型的,在整型常量添加后缀l或L可以将整数转换为long类型。
注意:0x前缀代表16进制整数,0开头代表8进制,0b代表二进制。
注意:整数添加下划线分隔,可以提升易读性。
浮点(小数)型:
float:占4个字节。单精度小数(浮点数) 314*10^-2=3.14,可以精确到小数点后7位。
double:占8个字节。双精度小数,可以精确到17位。(默认类型)
注意:浮点型字面常量默认是double类型。
注意:浮点型字面常量添加f后缀,可以更改float类型.
字符型:
char:存储字符。占2个字节。底层本质就是一个整数。使用单引号。
0~65535
A=65
a=97
码表,unicode码表。
布尔型:
boolean:1/4个字节 只有两个值true,false。默认值是false(0)
boolean不能和其他类型类型转换(强制类型转换也不行)
基本数据类型的转换 隐式转换 强制类型转换
隐式转换(程序会自动完成的转换)
例如
byte numByte = 12;
int numInt = numByte;
强制类型转换,强制类型转换可能会出现错乱的情况,属于一刀切
例如
numInt = 128;
numByte = (byte) numInt;
System.out.println(numByte);
如图所示,强制转换的方法是在前面加()并在()内写入要转化成的类型
输入输出
输入一般情况下使用Scanner
Scanner scan = new Scanner(System.in);
来获得输入值
输出一般使用println和print
println可以没有参数,并且输出会自带换行 print必须要有参数,输出无法自动换行。 算术运算符
public class teast6 {
public static void main(String[] args) {
//运算符
//算术运算符+-*/%
int a = 12;
int b = 23;
int c=a+b;//a+b的值赋值给了c
System.out.println(a+b);//加
System.out.println(a-b);//剪
System.out.println(a*b);//乘
System.out.println(a/b);//除
System.out.println(a%b);//取余
//整数和整数运算结果是整数(int)
//除非有long类型参与得到的结果是long类型
//%结果的正负 A%B得到的结果正负号和A一样
//a++ a-- ++a --a
a=12;
a++;//在自身基础上加1
a--;//在自身基础上减一
System.out.println("_________________________________________");
a=12;
c=a++;//a++ 后加加 先将a的值付给表达式,a的值再加1
System.out.println(c);//此时c=12
a=12;
c=++a;//++a 前加加 先a+1,再将a的值付给表达式
System.out.println(c);//此时c=13
--a;//
}
}
比较运算符 // < > <= >= != == System.out.println(12 >= 23); System.out.println(12 <= 23); //==在基本类型当中比较的是值是否一样 System.out.println(12 == 23); System.out.println(12.5 == 12.5f); System.out.println(12 != 23); 逻辑运算符 && || ! boolean result = 12 > 23 && 23 < 45; //A&&B A和B都为true结果才为true result = 12 < 23 || 23 > 34; //A||B A和B有一个是true结果为true。 result = !true;
逻辑运算符中的短路现象 多个表达式运算,前面的表达式已经明确整个表达式的结果, 后面的表达式就可以不用运行了 例:
result = 12 > 23 && 23 < 45;
int a = 0;
int b = 0;
result = a++ < 0 && b++ > 0;
System.out.println(a + "----" + b);