1.Java入门准备
1.1.JDK,JRE,JVM三者的关系,以及JDK、JRE包含的主要结构有哪些?
JDK=JRE+Java的开发工具(javac.exe,java.exe,javadoc.exe)
JRE=JVM+Java核心类库
1.2为什么要配置path环境变量?如何配置?
为了在人员路径下执行java命令。
JAVA_HOME=bin的上一层目录
path=%JAVA_HOME%\bin
path=%JAVA_HOME%\jre
1.3常用的几个命令行操作有哪些?
cd
md
rd
del
cd..
cd/
1.4编译和运行上述代码的指令
编译:javac ChairMan.java //编译:javac+文件名
运行:java ChairMan //运行:java+类名
2.Java基础掌握
关键字
定义:被Java语言赋予了特殊含义,用做专门用途的字符串
特点:关键字中所有字母都为小写
用于定义类,函数,变量修饰符的关键字 |
---|
abstract final static synchronized |
用于定义类与类之间的关系 |
---|
extends impements |
用于定义建立实例及引用实例,判断实例的关键字 |
---|
new this super instanceof |
用于异常处理的关键字 |
---|
try catch finally throw throws |
基于包的关键字 |
---|
package import |
其他修饰符关键字 |
---|
navite strictfp transient volatile assert |
用于定义数据类型值的字面值 |
---|
true false null |
Java保留字
定义:现有Java版本尚未使用,但以后版本可能会作为关键字使用。自己命名标识符时要避免使用这些保留字
goto、const
标识符
定义:Java对各种变量、方法和类等要素命名时使用的字符序列称为标识符
技巧:凡是自己可以起名字的地方都叫标识符
定义合法标识符规则
1.由大小写英文字母,数字_或$组成
2.不能以数字开头
3.不可以使用关键字和保留字,但能包含关键字和保留字
4.Java中严格区分大小写,成都无限制
5.标识符不能包含空格。
Java中名称命名规范
包名:多单词组成时所有字母都小写:xxxyyyzzz
类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写xxxYyyZzz
常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
变量
基本数据类型之间的运算规则
1.自动类型提升
结论:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型
byte、char、short--->int -->long-->float-->double
2.强制类型转换
相当于自动类型提升的逆运算
强制类型转换,可能导致精度损失
运算符
算术运算符:+、-、*、/、%
对于使用strictfp关键字的的必须严格按照浮点数去计算。
关系运算符:==、!=、<、>、<=、>=
boolean运算符:&&、||
位运算符:&("与")、|("或")、^("异或")、~("非")、>>("左移")、<<("右移")
运算符优先级
String类型的使用
1.String属于引用数据类型
2.声明String类型变量时,使用""
3.Stirng可以和8种基本数据类型变量做运算,且运算只能时连接运算
4.运算结果仍然是String类型
subString(int a,int b)切取字串
+拼接
equals比较字符串内容相等
==比较是不是同一个字符串,是否放在同一个位置
charAt(int i)获得索引处字符
API
String(常量、不可变)
StringBuffer和StringBuilder(变量)
StringBuffer(线程安全、效率低,多线程推荐使用)
StringBuilder(线程不安全、效率高,单线程推荐使用)
append()追加字符串
toString返回一个String对象
枚举类型
BigInteger(大数)和BigDecimal(高精度)
for each循环
for(int element:a) System.out.println(element);
输入输出
进制
数组
杨辉三角代码
package com.huangui.exer; import java.util.Scanner; public class YangHuiTest { public static void main(String[] args) { Scanner inputScanner=new Scanner(System.in); int n=inputScanner.nextInt(); int[][] yanghui=new int [n][n]; for(int i=0;i<n;i++) { yanghui[i][0]=1; } for(int i=1;i<n;i++) for(int j=1;j<n;j++) { yanghui[i][j]=yanghui[i-1][j-1]+yanghui[i-1][j]; } for(int i=0;i<n;i++) { for(int j=0;j<=i;j++) System.out.print(yanghui[i][j]+" "); System.out.println(); } } }
回形数
import java.util.Scanner; public class RectangleTest { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("输入一个数字"); int len = in.nextInt(); int[][] arr = new int[len][len]; int s = len * len; int k = 1; int i = 0, j = 0; for (int m = 1; m <= s; m++) //m从1开始放入s个 { if (k == 1) { if (j < len && arr[i][j] == 0) arr[i][j++] = m; else { k = 2;//换方向 i++;//i这一行已经放了,所以到下一行 j--;//j = len 是跳出的,所以j回退一个 m--;//m也回退一个 } } else if (k == 2) { if (i < len && arr[i][j] == 0) arr[i++][j] = m; else { k = 3; i--; j--; m--; } } else if (k == 3) { if (j >= 0 && arr[i][j] == 0) arr[i][j--] = m; else { k = 4; i--; j++; m--; } } else if (k == 4) { if (i >= 0 && arr[i][j] == 0) arr[i--][j] = m; else { k = 1; i++; j++; m--; } } } for (int[] row : arr) { for (int odd : row) System.out.printf("%4d", odd); System.out.println(); } } }