JAVA入门
注释
注释定义
解释说明的文字
作用
1.对你的代码进行解释说明
2.便于后期维护
注意
1.注释的内容不会被编译
2.如果出现乱码的问题–>修改文件的编码格式为gbk
分类
1.单行注释:
作用域: 作用于当前行
嵌套: 可以嵌套单行注释,不可以嵌套多行注释和文档注释
位置: 行的上面,或者行尾
2.多行注释:
作用域:多行内有效
嵌套: 可以嵌套单行注释,不可以嵌套多行注释和文档注释
位置: 类的上面或者方法的上面
3.文档注释:
作用域:多行内有效
嵌套: 可以嵌套单行注释,不可以嵌套多行注释和文档注释
位置: 类的上面或者方法的上面
文档注释可以存在于类的api文档中
标识符
java中一切起名字 的地方都是标识符
命名规则
1.只能由数字,字母,下划线,美元符号$任意组合而成,但是数字不能开头
2.标识符是严格区分大小写
3.关键字不能作为标识符使用
关键字:再java中有一些具有自己的使用方式|使用途径|作用,这些词就是关键字 都是小写|工具中都有特殊颜色
保留字:java中有一些词将来有可能有自己使用用途或特殊含义,这些词就是保留字 goto const
一般再说关键字时候也包含保留字
命名规范
1.见名之意
2.驼峰命名
包: 全部小写
多级包:每个级别之间使用.进行分隔
类|接口: 每个单词g首字母大写
方法|变量: 第一个单词全部小写,第二个单词开始首字母大写
常量: 全部大写
变量
再程序执行过程中,其值可以发生改变的量,在内存中开辟一块空间,存储指定类型的数据
语法
java是一个强类型的语言 :声明变量的时候就要先确定类型
常用的数据类型: int整数 double小数 String字符串"" boolean布尔类型 char字符型’’
1.声明的同时赋值
数据类型 变量名 = 赋值;
2.先声明 后赋值
数据类型 变量名; //声明
变量名=赋值; //赋值
3.同时声明多个变量
=是java中唯一一个自右向左运算的符号
变量关注的点
1.数据类型
2.变量名(标识符的规则|规范)
3.值
4.作用域 {}
使用变量时需要注意的问题(1.输出 2.赋值 3.运算):
1.变量必须已声明
2.变量必须已赋值
变量的分类
1.成员变量|实例变量 :只声明不赋值存在默认值,类中方法外|语句块外定义的变量
int->0 double->0.0 字符串->null char->’ ’ boolean->false
2.局部变量: 使用前必须声明并且赋值
方法中语句块中定义的变量就是局部变量
常量
在程序运行过程中其值不能发生改变的量
分类
-
字面值常量
- 整数常量
- 小数常量
- 布尔常量
- 字符常量
- 字符串常量
-
自定义常量
被final修饰的变量为常量
数据类型
基本数据类型
四类八种
整形
表示形式 | 表示名称 | 范围 | 大小(字节) | 位(bit) |
---|---|---|---|---|
字节型 | byte | [-128,127] | 1 | 8 |
短整型 | short | [-32786,32767] | 2 | 16 |
整形 | int | ±21亿 | 4 | 32 |
长整形 | long | 很大 | 8 | 64 |
浮点型
表示形式 | 表示名称 | 精度 | 大小(字节) | 位(bit) |
---|---|---|---|---|
float | 单精度 | 小数点后7位 | 4 | 32 |
double | 双精度 | 小数点后15位 | 8 | 64 |
字符型
表示形式 | 表示名称 | 精度 | 大小(字节) | 位(bit) |
---|---|---|---|---|
char | 字符型 | [0,65535] | 2 | 16 |
字符型的表示形式:
''中给单个字符 ‘1’ ', ’ ’
0~65535 根据Unicode字符集进行确认 去 ascii
当字符型参与运算的时候,先转为10进制的数再去参与运算
布尔型
表示形式 | 表示名称 | 位(bit) |
---|---|---|
boolean | 布尔 | 1 |
引用数据类型
使用步骤
-
导包,import 关键字
-
创建引用数据类型的变量|引用
引用数据类型 变量名 = new 引用数据类型();
-
使用功能
变量|引用.功能名字();
-
关闭资源
变量.close();
一定要在当前类中使用完毕之后再去关闭,否则重新开启也不能使用了
类
Scanner类
-
导包:import java.util.Scanner;
-
创建引用数据类型的变量|引用
-
变量|引用.功能名字();
功能名字
next类型:nextInt() |nextByte() | nextDouble()
next() 接收字符串类型的数据
以上一系列的next功能,从有效字符开始接收,遇到空格,tab接不接收了,直到遇到enter结束功能 enter不会接收
nextLine() 接收一整行的数据,接收enter结束,enter会被接收 -
关闭资源
import java.util.Scanner; public class Scanner03{ /**主方法*/ public static void main(String[] args){ //1.导包 //2.创建Scanner的变量|引用 Scanner sc=new Scanner(System.in); //3.使用功能 //int i=sc.nextInt(); //int i=sc.nextByte(); String s=sc.next(); System.out.println("next()="+s); //处理系列next功能遗留的enter键 sc.nextLine(); String str=sc.nextLine(); System.out.println("nextLine()="+str); //关闭 sc.close(); //Scanner sc2=new Scanner(System.in); //String sss=sc2.next(); } }
Random类
产生随机数
功能函数:
- nextInt() 随机产生一个int范围内的随机数
- nextInt(int n) 随机产生一个 [0,n)整数
- nextDouble() 产生[0,1)之间的随机小数
产生给定范围内的随机数
[min,max) ran.nextInt(max-min)+min;
[min,max] ran.nextInt(max-min+1)+min;
接口
数组
数据类型转化
从小到大排序
byte -> short-> int -> long-> float ->double
-
boolean不参与数据类型转化
-
自动数据类型转化
从小范围类型的数据->大范围类型的数据
多个类型的值参与运算,最终结果的数据类型默认自动提升为最大的参与运算的数据的类型
多个数据的类型,如果只有byte,short,char任意组合,最终的结果会自动提升成为int
byte,short,char赋值,只要是在其范围内的常量值都可以成功赋值 -
强制数据类型转化
小范围数据类型 变量名 = (小范围数据类型)大范围类型的数据;
可能会有损失
转义字符
使用转义字符让一些具有特殊含义的字符表示其本身
转义字符从\开始 +要转义的字符
’
"
\
\t:制表符 : 一个制表符代表8个空格 一个汉字占2个空格,一个字母占1个空格
如果制表符位置前面的内容满足制表符的整数倍,重开一个制表符位,如果不满,就不全一整个制表符位
\n:换行符
\b:退格符
\r:回到行首
运算符
操作数: 运算符左右两边的数就是操作数
表达式: 运算符连接左右两边的操作数叫做表达式
语句: ;代表一个语句的结束
一元运算符|单目运算符:操作数只有一个的运算符 ++ –
二元运算符|双目运算符:操作有两个 + - * /
三元运算符|三目运算符:条件运算符
运算符优先级
() 最高
单目 算数 位 关系 ,逻辑 三目 后赋值
算数运算符
+,- *,/,%,++,–
取余%:取余数 当第一个操作数小雨第二个操作数的时候,值就为第一个操作数
++ –
a++ ==> a=a+1;
++a ==> a=a+1;
1.操作自己:++/–只影响自己的值,不影响其他值
++操作数的前面还是后面结果都是自身+1
–操作数的前面还是后面结果都是自身-1
2.操作别人:1)参与运算 2)赋值 3)打印
+±-在操作数的前面,都是先自身+1|-1然后在参与运算
+±-在操作数的后面,都是先参与运算,再自身+1|-1
一个变量在同一时刻只能指向一个值
赋值运算符
基础赋值运算符
=
- 优先级最低
- 唯一一个自右向左运算
扩展赋值运算符
+= -= *= /= %=
a+= 1 ->a=a+1
-
优点
提高执行效率,否则编译器也会把数据优化成为扩展赋值运算符的形式,能够成倍提高效率
帮强制类型转换 -
缺点
不直观
比较运算符
也叫关系运算符,结果都是boolean类型
< > >= <=
只能比较byte,short,int,long,float,double,char
== !=
可以使用基本数据类型|引用数据类型
逻辑运算符
操作数是值为boolean类型的表达式
& 与: 两边都为true结果才为true,一个为false结果为false
| 或: 一个为ture就是true,两个都为flase才是false
! 非: 取反 !true–>false
^ 亦或: 两个操作数相同为false,不同为true
短路的作用:如果第一个操作数就已经能够决定最终的结果了,第二个表达式不再执行
&&
||
public class Operator12{
/**主方法*/
public static void main(String[] args){
System.out.println("---------------&---------------");
System.out.println(true & false); //false
System.out.println(true & true); //true
System.out.println(false && true); //false
System.out.println(false & false); //false
System.out.println("---------------|---------------");
System.out.println(true | false); //true
System.out.println(true | true); //true
System.out.println(false | true); //true
System.out.println(false | false); //false
System.out.println("---------------!---------------");
System.out.println(!false); //true
System.out.println(!true); //false
System.out.println("---------------^---------------");
System.out.println(true ^ false); //true
System.out.println(true ^ true); //false
System.out.println(false ^ true); //true
System.out.println(false ^ false); //false
//System.out.println(3>4 & 3/0==0); //true
System.out.println(3>4 && 3/0==0); //true
}
}
常使用短路
条件运算符
格式
条件表达式 ? 值1: 值2;
注意事项
- 条件表达式值为boolean类型的表达式 true,false
- 如果结果为true,最终的结果取值1
- 如果结果为false,最终的结果取值2
- 最终一定可以得到一个结果
public class Operator01{
/**主方法*/
public static void main(String[] args){
//判断两个数的最大值
int a=5;
int b=7;
int result= a>b ? a : b;
System.out.println(result);
//求一个值是否为偶数
String str=a % 2 == 0 ? "偶数" : "奇数";
System.out.println(str);
}
}
位运算符
把操作数转为二进制,然后根据不同的位运算符的逻辑对二进制的操作数进行运算,最后得到的结果,转为十进制
-
& : 两个2进制的操作数,同一位数的两个数如果有一个为0结果就为0,两个都为1才是1
-
| : 两个2进制的操作数,同一位数的两个数如果有一个为1,两个都为0才是0
-
^ : 两个2进制的操作数,同一位数的两个数如果相同为0,不同为1
-
<< 左移 :把第一个二进制的操作数向做移动第二个操作数个位数,空余的位数补0,最终得到二进制的值–>转为十进制
m << n ==> m*2^n -
右移 :把第一个二进制的操作数向右移动第二个操作数个位数,移动出的位数不要,只保留剩下的位数的值–>转为十进制
m >> n ==> m/2^n