Java基础学习(持续更新…)
一、jdk的安装
-
jdk包括
- 开发工具
- jre:
- jvm
- 核心类库
-
一个电脑上可以安装很多个版本的jdk, 只要安装目录不同就可以了,至于以后你用哪一个, 环境变量里面你就去配置哪一个就可以了。
二、为什么要配置环境变量
- 我们想让 java命令和javac命令在任意的目录下都可以使用, 而不只是 bin目录。
- 用dos命令来编译运行java程序:
- cd:切换目录进入目录
- dir : 展示目录下的 直接目录结构。
- 除了根目录, 其他的目录下面 都会有额外的两个目录。
. 代表的当前目录
… 代表的是上一层目录。 - cd / :回到根目录。
- cls: 清幕
- exit
三、配置环境变量的方法
- 打开系统环境变量 对环境变量里面的Path添加一条路径:jdk的安装目录\bin
- 为了以后开发软件更好的识别路径,还有是为了保证更好的确保path的安全,可以在环境变量里面加入一条JAVA_HOME 其路径为你安装jdk的路径,然后再在Path里面加入**%JAVA_HOME%\bin** (JAVA_HOME的名字最好不要变 )
四、解决win10下用笔记本编辑的java程序中文乱码
- win10的记事本默认utf-8编码,dos命令窗口是ANSI编码,格式不统一,导致输出中文乱码,可以在记事本里面另存文件编码为ANSI即可。
五、Java的基本语法
看下面的代码:HelloWorld.java
public class HelloWorld{ //HelloWorld是一个类
public static void main(String[] args){
System.out.println("Hello World !!");
}
}
-
程序的组成:
-
注释(非必须):给人看的,jvm不会编译
- // 单行注释
- /* */ 多行注释
- /**
文档注释
*/
-
关键字:java 规定的 给了一些单词特殊的含义(关键词都是小写的,小写的不一定是关键词,比如 main并不是关键词)
- 程序里的 public,class,static,void是关键词
-
标识符:程序员起的名字
- 语法规定:
- a到z A到Z 0到9 $ _
- 不能是关键字。
- 不能以数字开头。
- 语法规定:
-
数据:
-
常量:在程序运行时不变的量
- 字符串常量
- 字符常量
- 整数常量
- 小数常量
- 布尔常量
- 空常量:只是用来占位,不可输出
-
变量 :~其实是在内存空间中开辟的一块空间,那么怎么限制他的格式呢???
-
一般有以下8个基本数据类型来限制其格式
整型
byte 1 -128 ~127
short 2 -32768~ 32767
int 4 正负21亿左右
long 8
浮点型
float 4
double 8
字符型
char 2
布尔型
boolean 1 (java的官方声明 boolean 类型没有明确的大小 ) 表示数据范围的大小顺序:
byte < short = char < int < long <float < double 1 < 2 = 2 < 4 < 8 < 4 < 8
-
-
数据类型的转换:
-
隐式类型转换
规则: 是小范围的数据类型 可以直接转到 大范围的数据类型。
举例:
int a = 10; long b = a; //自动类型转换
运算中的自动类型转换:
不同种类型的数据是没有办法直接运算的,所以要想运算必须先统一类型
- 比int大(或者是等于)的类型,在进行运算的时候,小类型会自动提升为大类型进行运算。
- 比int小的数据类型, 在进行运算的时候, 会双双提升为int类型 再运算。
-
强制类型转换
规则: 是大范围的数据类型 转到 小范围的数据类型 必须要强制类型转换。
1:明确转过去 数据正确的,这时候可以转 int a = 10; //byte b = a; // 报错。 byte b = (byte) a; // 正确。
2: 强制让小数取整。 double d = 3.74; int a= (int)d; //3 正确 3: 不推荐: 明知道转过去数据不对了, 还转。 int a = 200; byte b = (byte)a; //肯定不是200了 至于是什么数 你不需要知道。
-
类型转换的注意事项
-
boolean类型不参与任何的类型转换
-
常量优化机制
写一个整数常量 默认是int类型。
System.out.println(100); // 100 就是int类型的数据。
比int小的类型 都存在常量优化机制。
byte a = 100; // 虽然100是int类型不假,但是依然可以赋值,这就叫做常量优化机制。 //底层代码 byte a = (byte)100; int b = 100; //byte c = b; // 报错。 因b 不是常量。 他是变量。 byte d = 100 + 20; // 正确。 常量的运算, 在编译成class期间 就已经把他俩的结果120弄到了class文件中,运行之前就已经算出了。 // 所以等运算的时候 其实就是运行 byte d = 120; byte e = 100; //byte f = e +20; // 报错。 因为e是变量 运行的时候 e会先提升为int类型 再和int类型的20进行运算,最后结果是int类型。
-
-
类型转换解释一些原理
-
long类型的数据后面 为什么要加 L
一个大的整数已经超出了int(整数默认的类型),后面带个L可以告诉编译器取用long型来解析
-
float 类型的数据后面 为什么要加一个 F
原因同1
-
-
-
-
符号
-
基本符号
空格 :写代码的时候 每个单词必须用空格隔开。
{} :表示范围, 里面可以写多条语句。
; :一个分号代表一条语句的结束。
() :
强制类型转换
改变运算的优先级
结构语句
方法的调用和定义。
[] : 数组
“” :字符串
‘’ : 字符
. :
表示小数点
表示调用的过程。 -
运算符
- 算术运算符 : + - * / % 注意 字符+ 和 字符串+
2. 自增自减运算符:
这里要明白表达式的概念,用运算符连接起来的式子叫表达式
int i = 10; int j = i++; System.out.print(i); //i=11 System.out.print(j); //j=10,这里指的是j就是表达式(i++)经过编译后的值
int i = 10; int j = ++i; System.out.print(i); //i=11 System.out.print(j); //j=11,这里指的是j就是表达式(++i)经过编译后的值
-
赋值运算符
-
普通赋值运算符 :=
-
复合赋值运算符:+= -= *= /= %=
-
注意: 复合赋值运算符 底层有一个强制类型转换的动作。
short s = 10; byte b = 20; b+=s;//这里是正确的,底层代码 : b = (byte)(b+s); System.out.println(b);
-
-
关系运算符:> < == >= <= !=
-
逻辑运算符:& | ! ^ 短路与 && 短路或||
-
三元运算符:关系表达式 ? 表达式1 :表达式2;
语句:顺序结构、选择结构、循环结构
-
-