java总结(1)
前期准备
JDK安装
1.下载
2.路径不能有中文,否则安装向导会中断
3.记住安装的路径
4.配置环境变量
电脑-属性-高级系统设置
环境变量-JAVA_HOME
配置path变量
5.测试jdk是否按装成功
cmd-java -version
idea使用
集成开发环境 代码编译器 编辑器 调试器 图形界面显示器
1.创建新项目
2.选择jdk
3.在src下面创建包
4.在包下面新建class文件
新建
建立Empty project
file-new-module
file-project Structure
设置 project-jdk和语言等级 与jdk版本一样
快速生成语句
psvm
sout
内容辅助键
ctrl+alt +space
注释
单行 选中代码 ctrl+l
多行 选中代码 ctrl+shift+L
基础语法
-
对象:对象是类的一个实例,有状态和行为。
-
类:类是一个模板,它描述一类对象的行为和状态。
-
方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。
-
实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定
标识符
类名、变量名以及方法名都被称为标识符
应该以字母,美元符号,下划线开始
不能使用关键字
标识符是大小写敏感的
变量名字可以是中文,类名也可以但是不推荐
采用Unicode字符集,汉字和英文字母一样
如:age、$salary、_value、__1_value
包名
也可以新建包 方便分类
一般用公司域名作为包名:com.huxiang.blod
为使用包成员 在java中明确导入该包,使用import语
关键字
下面列出了 Java 关键字。这些保留字不能用于常量、变量、和任何标识符的名称
类别 | 关键字 | 说明 |
---|---|---|
访问控制 | private | 私有的 |
protected | 受保护的 | |
public | 公共的 | |
default | 默认 | |
类、方法和变量修饰符 | abstract | 声明抽象 |
class | 类 | |
extends | 扩充,继承 | |
final | 最终值,不可改变的 | |
implements | 实现(接口) | |
interface | 接口 | |
native | 本地,原生方法(非 Java 实现) | |
new | 新,创建 | |
static | 静态 | |
strictfp | 严格,精准 | |
synchronized | 线程,同步 | |
transient | 短暂 | |
volatile | 易失 | |
程序控制语句 | break | 跳出循环 |
case | 定义一个值以供 switch 选择 | |
continue | 继续 | |
default | 默认 | |
do | 运行 | |
else | 否则 | |
for | 循环 | |
if | 如果 | |
instanceof | 实例 | |
return | 返回 | |
switch | 根据值选择执行 | |
while | 循环 | |
错误处理 | assert | 断言表达式是否为真 |
catch | 捕捉异常 | |
finally | 有没有异常都执行 | |
throw | 抛出一个异常对象 | |
throws | 声明一个异常可能被抛出 | |
try | 捕获异常 | |
包相关 | import | 引入 |
package | 包 | |
基本类型 | boolean | 布尔型 |
byte | 字节型 | |
char | 字符型 | |
double | 双精度浮点 | |
float | 单精度浮点 | |
int | 整型 | |
long | 长整型 | |
short | 短整型 | |
变量引用 | super | 父类,超类 |
this | 本类 | |
void | 无返回值 | |
保留关键字 | goto | 是关键字,但不能使用 |
const | 是关键字,但不能使用 | |
null | 空 |
注释
单行注释·
//
多行注释
/* */
文档注释
/*
*/
public class Hello {
/* 这是第一个Java程序
* 它将输出 Hello World
* 这是一个多行注释的示例
*/
public static void main(String[] args){
// 这是单行注释的示例
/* 这个也是单行注释的示例 */
System.out.println("Hello World");
}
}
javadoc
自己用来生成文档
参数信息:
- @author 作者名
- @version 版本号
- @since 指明需要最早使用的jdk
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况
命令行操作Java生成文档
javadoc -encoding UTF-8 -charset UTF-8 java文件(字符编码格式)
编译和解释
编译全局翻译
解释实时更新(边执行边解释)
java先编译到操作系统才解释
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-etpnwQW2-1626270403005)(D:\笔记\JAVA学习笔记\ZSSDMld.png)]
基本数据类型
数据类型取值范围 都包装类
// int
System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);
System.out.println("包装类:java.lang.Integer");
System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);
System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);
八大基本类型 primitive type:
//整数 默认值0
int num1=10;--java.lang.Integer
short num2=20;--java.lang.Short
--java.lang.Long"
long num3=30L;//long 类型后面加上L
byte num4=40;--java.lang.Byte
//小数
float num5=60.1F;--java.lang.float
double num6=3.1415926;--java.lang.Double
double d1 = 7D ;
double d2 = 7.;
double d3 = 8.0;
double d4 = 8.D;
double d5 = 12.9867;
//字符
char name='胡';--java.lang.Character
//字符串
//String name1="傻子";
//String是类 ,不是关键字
//布尔型
boolean flag=ture;
//boolean flag=false;
String name;//object 默认值null
float 和double不一样
float=double+1;
少用浮点数进行比
字符类
所有的字符本身还是数字
boolean 类型
boolean b1=true;
boolean b2=false;
if(b1)
{
ture分支
}else
{
false分支
}
引用类型 reference type:
类class
数组
接口interface
常量
在 Java 中使用 final 关键字来修饰常量,声明方式和变量类似:
final double PI = 3.1415927;
类型转换
- 条件是转换的数据类型必须是兼容的。
- 格式:(type)value type是要强制类型转换后的数据类型 实例:
- 整数默认类型 int
- 小数默认类型double
修饰符
- default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
- private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
- public : 对所有类可见。使用对象:类、接口、变量、方法
- protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
访问权限
修饰符 | 当前类 | 同一包内 | 子孙类(同一包) | 子孙类(不同包) | 其他包 |
---|---|---|---|---|---|
public | Y | Y | Y | Y | Y |
protected | Y | Y | Y | Y/N(说明) | N |
default | Y | Y | Y | N | N |
private | Y | N | N | N | N |
使用默认访问修饰符声明的变量和方法,对同一个包内的类是可见的。接口里的变量都隐式声明为 public static final,而接口里的方法默认情况下访问权限为 public。
Scanner类
用来获取用户的输入
`Scanner对于没有外部同步的多线程使用是不安全的。
import java.util.Scanner
Scanner s=new Scanner(System.in);
Scanner类
next()和nextline()获取输入的字符串
next():
- 1、一定要读取到有效字符后才可以结束输入。
- 2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
- 3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
- next() 不能得到带有空格的字符串。
nextLine():
- 1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
- 2、可以获得空白。
hasNext()和hasNextLine()判断是否有输入的数据
toens()方法还可以阻止等待输入。
关闭
scanner.close();
Scanner. (方法);
数组
定义格式
int [] arr;
定义了int 类型数组,数组是arr;
int arr[];
定义了int 类型变量,变量名数组arr
动态初始化
初始化时分配值为0;
只指定长度
int[]arr=new int[3];
int [][] arr=new int [2][5]
数组元素访问
数组名[索引]
索引:从0开始 连续 逐一增加
静态初始化
int [] arr={1,2,3,4,5};
数组遍历
利用for循环
arr.length --获取数组元素个数
增强java循环
Java 增强 for 循环语法格式如下:
for(声明语句 : 表达式) { //代码句子 }
public class Test {
public static void main(String args[]){
int [] numbers = {10, 20, 30, 40, 50};
for(int x : numbers ){
System.out.print( x );
System.out.print(",");
}
System.out.print("\n");
String [] names ={"James", "Larry", "Tom", "Lacy"};
for( String name : names ) {
System.out.print( name );
System.out.print(",");
}
}
}
java.util.Arrays
按住ctrl可以查看类
点击structure可以查看发方法
稀疏数组
记录 行数和列数 以及有效值数
(某行 某列 ) 值
import java.util.Arrays;public class S { public static void main(String[] args) { int [] []arr=new int [11][11]; arr[2][4]=1; arr[6][5]=3; for(int[] ints: arr) { 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(arr[i][j]!=0){ sum++; } } } int [][] arr1=new int [sum+1][3]; arr1[0][0] =11; arr1[0][1] =11; arr1[0][2] =sum; int cnt=0; for(int i=0;i<arr.length;i++){ for(int j=0;j<arr[i].length;j++){ if(arr[i][j]!=0) { cnt++; arr1[cnt][0] = i; arr1[cnt][1] = j; arr1[cnt][2] = sum; } } } for (int j = 0; j <arr1.length; j++) { System.out.println(arr1[j][0]+"\t"+ arr1[j][1]+"\t" +arr1[j][2]+"\t"); } } }
方法
一个方法里只完成一个功能
方法包含于类或对象中
类似与函数
当有返回值的时候,被当作一个值
返回值是void 方法调用一定是一条语句
修饰符 返回值类型 方法名(参数类型 参数名){ ... 方法体 ... return 返回值;}
方法重载
名字一样
数据类型不一样
参数个数不一样
参数类型不一样
返回值可以相同也可以不相同