-
[JDK8链接]Java Downloads | Oracle
-
注册并安装相应版本
-
记住安装路径
-
配置环境变量
-
我的电脑-属性-高级系统设置
-
环境变量-系统变量-添加变量名为JAVA_HOME 变量值为安装路径
-
双击Path,添加两个变量%JAVA_HOME%bin和%JAVA_HOME%jrebin
-
win+R键打开dos命令窗口,输入cmd并打开
-
输入java -version,显示如下图则说明安装成功
-
- 我的电脑-属性-高级系统设置-环境变量-系统变量-JAVA_HOME-变量值
- 删除变量值对应路径的文件
- 删除环境变量JAVA_HOME以及path内的java相关环境
- win+R键打开dos命令窗口,输入cmd并打开
- 输入java -version,显示 ‘java’ 不是内部或外部命令,也不是可运行的程序或批处理文件。 则说明卸载成功
-
新建文件夹存放java代码
-
新建java文件
- 新建任意文件,文件名为Hello
- 修改后缀为.java
-
以notepad++方式打开
-
编写代码
public class Hello{ public static void main(String[] arqs){ System.out.print("Hello,World!"); } }
- 第一行类名”Hello“与文件名一致
- 第三行末尾有分号
- 注意大小写及中英文
-
保存并退出
-
在当前文件夹页面进入cmd
-
输入指令javac Hello.java并回车,生成一个class文件
-
输入指令java Hello并回车
-
编译型
-
解释型
[IDEA官网下载]IntelliJ IDEA: The Capable & Ergonomic Java IDE by JetBrains
- 汉化:
- 点击左上角fill
- 点击下方sett
- 点击Plugins**
- 点击上面的Marketplace
- 搜索Chinese
- 安装第二个
- 然后点击Restart IDE
- 重启后就是中文了
- 优化[]IDEA的优化配置_大撕码的博客-CSDN博客_idea优化
-
单击新建项目
-
选择空项目
-
如图创建模块
-
如图修改项目结构
-
如图新建java文件
书写注释是一个非常好的习惯
单行注释
//我是注释
多行注释
文档注释
标识符
- 关键字
- 标识符:
- 以字母、美元符$、下划线开头
- 之后用字母、美元符$、下划线、数字
- 不能使用关键字
- 区分大小写
- 可以以中文命名
public class name {
public static void main(String[] args) {
String id="21130124";//给“id”赋值“21130124”
System.out.println(id);//输出“id”的值
}
}
数据类型
java为强类型语言:先定义再使用
变量:变量类型 变量名 = 值;
基本类型-
数值型
-
整型
类型名 所占字节 范围 byte 1 -128-127 short 2 -32768-32767 int 4 -2147483648-2147483647 long 8 … -
浮点型
类型名 所占字节 float 4 double 8 -
字符型 char 占2字节
-
-
boolean类型:占1位,只有true和false
public class demo03 { public static void main(String[] args) { //整形 byte num1=1; short num2=100; int num3=1000; long num4=10000L;//末尾加L //浮点型(末尾要加f) float num5=10.1f; double num6=3.1415f; //字符 char name = '胡'; //字符串 String NAME = "胡靖"; //布尔值 boolean flag = true; //boolean flag = false; } }
- 类
- 接口
- 数组
| 强制转化 | (类型)变量名 | 高->低 |
|---|---|---|
| 自动转化 | 低->高 |
注意点
- 不能对布尔值转化
- 不能转化不相干的类型
- 高容量到低容量要强制转化
- 转化可能有内存溢出或精度问题
数据类型 变量名 = 值;
命名规则:
- 见名知意
- 类成员变量、局部变量和方法名采用驼峰原则(除了第一个单词以为,后面的单词首字母大写)
- 常量用大写字母和下划线
- 类名首字母大写和驼峰原则
- 实例变量:从属于对象;默认值为0 0.0 false或者null
- 局部变量:必须声明和初始化
- 类变量:static double salary = 5000.0;
public class demo04 {
//类变量 static
static double salary=5000.0;
//实例变量:从属于对象;如果不初始化则为0
String name;
int age;
public static void main(String[] args) {
//局部变量:必须声明和初始化值
int i=1;
System.out.println(i);
//类型变量 变量名=new demo04
demo04 demo04 = new demo04();
System.out.println(demo04.age);
System.out.println(demo04.name);
//类变量 static
System.out.println(salary);
}
}
常量
初始化后不能改变的值
常量名一般使用大写字符
public class demo05 {
static final int HIGH = 50;
static final int LONG = 100;
public static void main(String[] args) {
System.out.println(HIGH);
System.out.println(LONG);
}
}
运算符
包机制
语法格式为
package pkg1[.pkg2[.pkg3...]];
一般以公司域名倒置作为包名;
建包:
导入包语句:
import com.hujing.www.Demo01;//导入包 import com.hujing.www.*;//导入这个包下所有类
导入包名不能重复
JaveDoc生成文档-
cmd窗口输入:javadoc -encoding UTF-8 -charset UTF-8 Doc.java
-
index.html文件
- 作用:获取用户输入。
- 语法:
Scanner s = new Scanner(System.in);
-
通过Scanner类的next和nextline()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。
-
凡是属于IO流类不关闭会一直占用资源,要养成好习惯,用完就关掉
scanner.close();//关闭scanner
next():不能得到带有空格的字符串,空格是结束符
Scanner scanner = new Scanner(System.in);
//创建一个扫描器对象,用于接收键盘数据
System.out.println("使用next方式接收:");
//输出字符串
String str = scanner.next();
//输入字符串
System.out.println("输出的内容为:"+str);
//输出字符串
scanner.close();
//关闭scanner
nextLine():可以获得空格,回车是结束符
Scanner scanner = new Scanner(System.in);
//创建一个扫描器对象,用于接收键盘数据
System.out.println("使用next方式接收:");
//输出字符串
String str = scanner.nextLine();
//输入字符串
System.out.println("输出的内容为:"+str);
//输出字符串
scanner.close();
//关闭scanner
此外还有如下输入语句:
scanner.nextInt();//输入整形 scanner.nextFloat();//输入实型
小例子1:
Scanner scanner = new Scanner(System.in);
int i=0;
float k=1;
System.out.println("请输入一个数字:");
if (scanner.hasNextInt())
//判断输入的数字是否为整形
{
i = scanner.nextInt();
//将输入的数字赋值给i
System.out.println("您输入的是整数:" + i);
}
else if (scanner.hasNextFloat())
//判断输入的数字是否为整形
{
k = scanner.nextFloat();
//将输入的数字赋值给k
System.out.println("您输入的是小数:" + k);
}
scanner.close();
小例子2:
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一串数字");
double sum=0;
int n=0;
while (scanner.hasNextDouble())
//判断输入是否为数字
{
double x = scanner.nextDouble();
sum+=x;
//求和
n++;
}
System.out.println("n个数的和为:"+sum);
System.out.println("平均数为:"+(sum/n));
scanner.close();
三大结构
选择
Switch:同c
特性:case后可为字符串
循环while:同c
do while:同c
for:同c
增强for循环:
int [] numbers = {10,20,30,40,50};
for(int x:numbers)
{
System.out.println(x);
}
同下:
int [] numbers = {10,20,30,40,50};
for (int i=0;i<5;i++)
{
System.out.println(numbers[i]);
}
break:同c
continue:同c
判断if()else if():同c
方法方法就是c语言中的函数
定义方法:
public static int add(int a,int b)
{
return a+b;
}
调用方法:对象名.方法名
静态方法:定义:static 类型
调用:对象名.方法名
和类一起出现
非静态方法:定义:没有static
调用:
-
实例化:对象类 对象名 = 对象名
Study study = new Study();
-
调用
study.say();
实例化后才出现
值传递实参向形参单向传递
引用传递通过对象传递
public static void main(String[] args) {
Person person = new Person();
System.out.println(person.name);
Demo02.change(person);
System.out.println(person.name);
}
public static void change(Person person){
person.name="胡靖";
}
}
class Person{
String name;
}
数组
增强for使用
int [] a1 = {1,2,3}
a1.for
二维数组
定义语法:
int [][] a=new int[11][11]; //定义一个11*11大小的数组
打印输出:
int [][] a1=new int[11][11];
//定义一个11*11大小的数组
a1[1][2]=1;
a1[2][3]=1;
for (int[] ints : a1) {
for (int anInt : ints) {
System.out.print(anInt+"t");
}
System.out.println();
}
Arrays类
int a[] = {1,2,3,567,6454,654,2,43,53};
int b[] = {1,1,1,1,1,1,1,1,1};
int num=0;
int serc=567;
System.out.println(Arrays.toString(a));
//打印数组元素:Arrays.toString(a)
Arrays.sort(a);
System.out.println(Arrays.toString(a));
//将数组升序排序:Arrays.sort(a)
if(Arrays.equals(a,b))
{
System.out.println("相等");
}
else
{
System.out.println("不相等");
}
//比较两个数组元素:Arrays.equals(a,b)
num=Arrays.binarySearch(a,serc);
System.out.println("第"+(num+1)+"个元素是"+serc);
//对排序好的数组进行二分查找法
Arrays.fill(a,1);
System.out.println(Arrays.toString(a));
//将数组填满数字1:Arrays.fill(a,1)
Arrays.fill(a,2,4,3);
System.out.println(Arrays.toString(a));
//将数组从第二个到第四个元素(左闭右开区间)填满数字3:Arrays.fill(a,2,4,3)
稀疏数组
-
当一个数组大部分元素为0或者同一数值使,可以使用稀疏数组保存该数组。
-
处理方法:
- 记录数组有几行几列,有多少不同值(有效值)
- 把不同值的元素的行、列、值存放在一个小规模数组中
代码:
int [][] a1=new int[11][11];
//定义一个11*11大小的数组
a1[1][2]=1;
a1[2][3]=1;
for (int[] ints : a1) {
for (int anInt : ints) {
System.out.print(anInt+"t");
}
System.out.println();
}
//原始数组
int sum = 0;
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
if (a1[i][j]!=0)
{
sum++;
}
}
}
//获取有效值个数
int[][] a2=new int[sum+1][3];
//有效值个数为行数,其行、列、值为列
a2[0][0]=11;
//棋盘行数
a2[0][1]=11;
//棋盘列数
a2[0][2]=sum;
//棋盘有效值个数
int count=0;
for (int i = 0; i < a1.length; i++) {
for (int j = 0; j < a1[i].length; j++) {
if(a1[i][j]!=0)
{
count++;
a2[count][0]=i;
a2[count][1]=j;
a2[count][2]=a1[i][j];
}
}
}
//构造稀疏数组
for (int i = 0; i < a2.length; i++) {
System.out.println(a2[i][0]+"t"+a2[i][1]+"t"+a2[i][2]+"t");
}
//打印稀疏数组
原理图:



