JAVA基础
在跟狂神学JAVA!!强推!!【狂神说Java】Java零基础学习视频通俗易懂_哔哩哔哩_bilibili
注释
不会被执行,助于理解代码。
JAVA三种注释
//单行注释
/*
多行注释
*/
/**
文档注释
功能 @Description 描述
@Author 作者
*/
//示例
package com.learnjava.qyh;
/**
*@author qyh
*@version 1.0
*since 1.8
*/
//先在类前写文档注释
public class Doc {
String name;
/**
* @author qyh
* @param name
* @return
* @throws Exception
*/
//在类内注释是类注释,在方法里注释是方法注释
public String test(String name)throws Exception{
return name;
}
}
1.通过命令行生成Javadoc文档,在idea右键选择Open in Explorer 打开所在文件夹,打开cmd(最好用shift在空格右键选择PowerShell),输入javadoc -encoding UTF-8 -charset UTF-8 Doc(类名).java
2.用idea生成javadoc文档
参考方法:https://www.cnblogs.com/xiaoming0601/p/6657136.html
生成后自动打开index文档
注:语言类型zh_CN(是下划线!)
标识符
关键字
1.类名、变量名、方法名都被称为标识符。
2.不可以用关键字取名
3.标识符大小写敏感
4.标识符以英文字母、 、 开 头 , 首 字 母 后 可 以 是 英 文 字 母 、 、_ 开头,首字母后可以是英文字母、 、开头,首字母后可以是英文字母、、_、数字。特殊符号要小心使用。
5.可以用中文做标识符(不规范不建议)
强类型语言
要求变量的使用严格符合规定,所有变量都必须先定义后才能使用。
数据类型
分类
基本类型、引用类型。
1.基本数据类型:
数值类型:
整数类型【byte(1B)、short(2B)、int(4B)、long(8B)】、
浮点类型【float(4B)、double(8B)】、字符类型(2B);
boolean类型(1B,值只有true和false)。
//注意long和float后面需要加字母(大小写都行)区分:
long num = 20L;
float num1 = 10.2F;
2.引用数据类型:类、接口、数组。
3.String不是数据类型,它是一个类。
扩展
整数:开头区分:二进制0b 八进制0 十进制 十六进制0x
int i = 10; System.out.println(i);
int i1=010; System.out.println(i1);
int i2=0x10; System.out.println(i2);
//输出结果
10
8
16
浮点数:
float i = 1111111111f;
float k = i+1;
double j =1111111111;
System.out.println(i==j);
System.out.println("-----------------");
System.out.println(i==k);
//输出结果
false
-----------------
true
//最好完全避免使用浮点数比较
字符:
char i = 'a';
char j ='中';
System.out.println(i);
System.out.println(j);
System.out.println("-----------------");
System.out.println((int)i);//强制转换
System.out.println((int)j);//强制转换
//输出结果
a
中
-----------------
97
20013
//字符本质还是数字
/*编码 Unicode 2B 0~65535
编码表 97=a 65=A ……
原先编码样式 U0000~UFFFF
char i = '\u0061'; // \u转义
System.out.println(i);
输出结果为 a
*/
/*
转义字符
\t 制表符
\n 换行
……
*/
类型转换
强制转换 (类型)变量名 高→低
自动转换 低→高
//强制转换
int i = 128;
byte j = (byte)i;//内存溢出
System.out.println(i);
System.out.println(j);
//输出为
128
-128
//自动转换
int i =128;
float j = i;
System.out.println(i);
System.out.println(j);
//输出为
128
128.0
注意:
1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.高容量到低容量,强制转换
4.转换时可能会存在溢出问题或者精度问题
//精度问题
System.out.println((int)23.7);
System.out.println((int)-45.89f);
//输出为
23
-45
//char与int转换
char i='a';
int j=i+1;
System.out.println(i);
System.out.println(j);
System.out.println("--------");
System.out.println((char)j);
//输出为
a
98
--------
b
//大整数溢出问题
//jdk7:数字之间可以用过下划线分割
int money = 10_0000_0000;
int years = 20;
int total = money*years;
long total1 = money*years;//转换之前就已经溢出了
long total2 = (long)money*years;
long total3 = money*(long)years;
long total4 = ((long)(money*years));
System.out.println("int total="+total);
System.out.println("long total1="+total1);
System.out.println("long total2="+total2);
System.out.println("long total3="+total2);
System.out.println("long total4="+total2);
//结果
int total=-1474836480
long total1=-1474836480
long total2=20000000000
long total3=20000000000
long total4=20000000000
变量
类型
类变量、实例变量、局部变量
public class study {
//类变量:从属于类,随类消亡 static
static double salary = 2500;
//属性:变量
//实例变量:从属于对象,如果不自行初始化,这个类型的默认值 整数类型:0 浮点数类型:0.0
//布尔值:默认false 其他类型:null
String name;
int age;
//main方法
public static void main(String[] args) {
int i = 10;//局部变量:必须声明和初始化,作用域:方法内
System.out.println(i);
//变量类型 变量名 = new 变量类型();
study study1 = new study();
System.out.println(study1.age);
System.out.println(study1.name);
System.out.println(salary);
}
}
//结果
10
0
null
2500.0
常量
初始化后常量的值不可改变。
关键字final
public class LearnFinal {
//修饰符(数据类型前面)不存在先后顺序
static final double PI = 3.14;
final static double pi = 3.14;
public static void main(String[] args) {
System.out.println(PI);
System.out.println(pi);
}
}
//结果
3.14
3.14
命名规范
所有变量、方法、类名:见名知意
类成员变量:首字母小写和驼峰原则: monthSalary 除了第一个单词以外,后面的单词首字母大写lastname、lastName
局部变量:首字母小写和驼峰原则
常量:大写字母和下划线:MAX_VALUE
类名:首字母大写和驼峰原则: Man,GoodMan 方法名:首字母小写和驼峰原则: run(), runRun()
运算符
算术运算符: +, -,**,l,%,++,–
赋值运算符: =
关系运算符: >,<,>=,=,==,!= instanceof 逻辑运算符: &&,||,!
位运算符: &,|,^,~,>>,<<,>>>* 条件运算符 ?︰
扩展赋值运算符: +=,-=,*=,/=
//一元运算符++ --
int a = 3;
int b = a++;//先赋值,再自增
//a =a+1
System.out.println(a);
//a =a+1;
int c = ++a;//先自增,后赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
/*
4
5
3
5
*/
//二元运算符
int a = 10;
int b = 20;
System.out.println(a/(double)b);//不转换会变成0
/*
0.5
*/
long a = 1234567897456132L;
int b = 20;
short c = 20;
byte d = 25;
System.out.println(a+b+c+d);//long
System.out.println(b+c+d);//int
System.out.println(c+d);//int
//如果有long,就为long类型
//如果没有,都是int(因为默认类型是int)
//short+byte=short,但因默认类型是int,而short→int自动转换了
很多运算,会使用工具类运算操作
double pow = Math.pow(3,2);//底数,次幂 3^2
System.out.println(pow);
//
9.0
//逻辑运算
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(a&&b));//逻辑与 都真为真
System.out.println("a || b:"+(a||b));//逻辑或 一真为真
System.out.println("!(a && b):"+!(a&&b));//逻辑非 真假假真
//短路运算 如果&&前的运算是假,不会进行后面操作
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);
System.out.println(c);//c没变,c++<4没有执行
/*
a && b:false
a || b:true
!(a && b):true
false
5
*/
//字符串连接符 + ,String + 会变为字符串类型,如果在他前面则先进行运算,再变成字符串
int c = 20;
int d = 10;
System.out.println(""+c+d);
System.out.println(c+d+"");
/*
2010
30
*/
//三元运算符
//x?y:z
//if x==true,y,
//else false,z
int score1 = 60;
int score2 = 59;
String type1 =score1<60?"NO":"YES";
String type2 =score2<60?"NO":"YES";
System.out.println(type1);
System.out.println(type2);
/*
YES
NO
*/