typora-root-url: …\png
java基础
注释
作用:不会执行,是给人看的,解释程序的作用。
分为三种:单行注释,多行注释,文档注释
单行注释
public class 注释相关 {
public static void main(String[] args) {
System.out.print("Hello World!") ;//这是单行注释,输出Hello World
}
}
多行注释
/*public class 注释相关 {
public static void main(String[] args) {
System.out.print("Hello World!") ;
}
}*/
文档注释(JavaDoc)
以下为书写方式
/**
*@Author Renatus
*@Description Hello World
*/
官方有提供一些文档帮助,现阶段暂时不用学
可以加在类上方也可以加在方法上方
生成文档的命令,还是很有用的,生成以后点击index.html即可进入
新建空工程并添加Java模块
1.创建的时候直接选择空项目
2.文件–>x新建–>新模块–>选择java新建
3.新建–>项目结构–>项目进行如下设置
即可开始写程序
标识符和关键字及数据类型
关键字及标识符
public class 标识符相关 {
public static void main(String[] args) {
String About="111";
int about=1;
char _text=1;
double $123=12;
String 王者荣耀="最强王者"//可以看到变量名可以以大小写字母和$及_以及中文开头,其他的都不可以
/*int *qwe=1;
int 1qwe=1;
int w@=1;
int String=1;
//以上种种都是不可以的*/
}
}
数据类型
字节相关
java是一种强类型语言(要求变量使用要严格符合规定,所有变量必须先定义以后才能使用),其数据类型分为两大类
基本数据类型
数值类型
1.整数类型:
byte:占1个字节:-128-127
short:占两个字节:-32768-32767
int:占四个字节:-2147483648-2147483647
long:占8个字节:。。。
2.浮点类型:
float:占四个字节
double:占8个字节(常用)
3.注意字符型变量char占两个字节
布尔l类型:占一位,值只有true和false两个
引用数据类型
类,接口,数组
相关代码
public class 标识符相关 {
public static void main(String[] args) {
String About="111";
//整数类型
byte num1=30; //只能表示-128-127,输入其他范围的数值无法表示
short num2=20;//2个字节
int num3=1; //4个字节,一般够用了,不会超出范围了,最常用
long num4=40L;//8个字节,一般要在数字后面加L。以区分类型这还是挺重要的
//浮点类型
float num5=50.1f;//注意一般要在数值后面加f以区分数据类型
double num6=60.23;//这个是浮点类型常用的
//字符类型
char name= 'a';//一定注意字符是一个字符,不是字符串
//字符串(不是关键词!!!!)
String name2="王者荣耀";
//布尔
boolean flag=ture//只有两个值
}
}
数据类型扩展及一些面试题
关于不同进制在java中的表示方法、
//关于不同进制的数值表示方法
int i1=10; //常规的十进制表示方法
int i2=010;//八进制表示方法
int i3=0x10;//十六进制表示方法
int i4=0b10;//二进制表示方法
System.out.println(i1);
System.out.println(i2);
System.out.println(i3);
System.out.println(i4);
输出结果:
10
8
16
2
浮点数的一个小问题
一个面试题:银行业务如何表示?
float i=0,1f;
double j=0.1;
System.out.println(i==j);//==可以判断两个变量是否相等
System.out.println(i);
System.out.println(j);
输出结果:
false
0.1
0.1
//更诡异的操作
float a=21212121212121212121f;
float b=a+1;
System.out.println(a==b);//true
输出结果:
false
0.1
0.1
true
此类浮点问题原因
浮点类型可表示的范围是有限的,但同时也是离散的,会存在一个舍入误差,是一个大约值。
总结:所以最好避免完全使用浮点数进行比较!!!!
所以最好避免完全使用浮点数进行比较!!!!
所以最好避免完全使用浮点数进行比较!!!!
那么银行业务的问题如何解决呢
要使用一个数学工具类:BigDectmol
关于字符的一些拓展
char c1='a';
char c2='中';
System.out.println(c1);
System.out.println(c2);
System.out.println((int)c1);
System.out.println((int)c2);//一定注意强制转换的写法,这个和c语言似乎不一样!!!!
//其实在计算机中,每一个字符都是对应一个ACSLL码的
//所有的字符本质上还是数字
//一般使用的是Unicode编码方法,占两个字节,最多表示65536个字符
char c3='\u0061';//这就是a对应的编码了,这个最少要知道
System.out.println(c3);
输出结果:
a
中
97
20013
a
转义字符拓展
System.out.println("-----------------转义字符拓展--------------------");
System.out.println("hello\tworld");//制表符
System.out.println("hello\nworld");//换行
//。。。还有很多的,可以去了解一下
对象,内存分析的初探
System.out.println("-----------------对象,内存分析初探--------------------");
String s1="Hello World";
String s2="Hello World";
String s3=new String("Hello World");
String s4=new String("Hello World");
System.out.println(s1==s2);
System.out.println(s3==s4);
//这个new就是新建一个对象,两者在内存分配的地址上是不同的,故而两者不是相等的,日后深入研究
输出结果:
true
false
布尔类型拓展
boolean flag1=true;
if(flag){System.out.println(1); }//只写变量和==true是一样的。
类型转换
强制类型转换(从高到低)
int ii=128;
byte jj=(byte)ii;//注意转换的写法
System.out.println(ii);
System.out.println(jj);
//这里由于byte范围是-128-127,服128给byte变量会导致溢出,可以参考c语言的溢出机制(一个圆环)
自动类型转换(从低到高)
int ii1=128;
double jj1=i;
System.out.println(jj1);
输出结果:
128.0
类型转换注意点
/*1.不能对布尔类型进行转换
2.不能把对象的类型转换为不相干的类型(字符类型转数字类型等等)
3.强制转换是大容量转换至低容量的时候才用
4.注意精度问题(浮点转化为整形时会去掉小数部分等等)和数值溢出问题*/
深化字符本质也是数的概念
System.out.println("深化字符就是数的概念");
char cos='a';
int sin=(int)cos+1;
System.out.println(sin);
sin=1;
cos+=(char)sin;
System.out.println(cos);
输出结果:
98
b
小知识
//数字很大的时候可以用下划线分割,并不会影响输出
int q=10_0000_00000;
//当大容量数据类型同低容量数据类型进行计算时,结果默认按大容量算
变量,常量,作用域
变量
小习惯更正
尽量不要在一行里面定义多个变量(我就有这个坏习惯),这样会使程序的可读性变差的!!!
作用域
可以看到类变量一定要有一个static,实例变量就没有,局部变量就是在方法(函数)中的变量。
public class java__base {
int o;//实例变量:是在方法之外的量,这个例子就是在main方法之外,要注意实例变量是可以不进行初始化赋值的,但是要注意使用他就没这么容易了
double p;
boolean xxx;
static double ix=10000;//类变量
public static void main(String[] args) {
//变量就省略了,基本都会了,但是一定注意一个习惯,尽量不要在一行定义多个变量,这样会使程序可读性变差
//局部变量:是在方法中的,生命周期也是方法的长度,要注意局部变量必须声明和初始化值
int x=1;//可以看到,数据类型,值一个都不能少
//实例变量:是在方法之外的量,这个例子就是在main方法之外,要注意实例变量是可以不进行初始化赋值的,但是要注意使用他就没这么容易了
//我们在开头定义了一个实例变量 int o;可以自行去查看
//实例变量使用方法
java__base xx=new java__base();//格式:变量类型(类名) 变量名字=new 类名();
System.out.println(xx.o);//可以看到没有定义数值但是输出了0(默认值)
System.out.println(xx.xxx);//输出false
System.out.println(xx.p);//输出0.0
//常见的实例变量默认值 :0(整形) 0.0(浮点) 0000 false(布尔类型,这个很重要)
//除了基本类型都是null
//类变量:是从属于类的变量,也就是说,在任何方法里都可以调用,格式就是static 数据类型 变量名=赋值;
System.out.println(ix);//注意类变量只能定义在类中,不能定义在方法中
}
常量
final double pi=3.14;
了解一下修饰符的概念
变量命名规范
一定注意规范!!!
运算符
基本运算符
long aa=1234455667;
int w=123;
short e=50;
byte z=20;
System.out.println(aa+w+e+z);//输出类型long
System.out.println(w+e+z);//输出类型int
System.out.println(e+z);//输出类型int
//总结:当加减运算中有long是,输出为long,其余的均为int
还有很多其他操作,试一试就知道了(比如浮点大于整形,当运算中有double会输出double)
自增自减运算符,复杂运算
//自增自减运算符
int t=1;
int t1=t++;//t++,先将t赋给变量,之后在下一行开头自加1
System.out.println(t);
int t2=++t;//++t,先进行自加,再把值赋给变量
System.out.println(t);
System.out.println(t1);
System.out.println(t2);
这个还是很重要的
//复杂运算(幂运算,开根运算等等)
double tx=Math.pow(2,3);//要引入Math类,还有很多运算,可以尝试,一定注意大小写
double ty=Math.sqrt(4);
System.out.println(tx);
System.out.println(ty);
逻辑运算符,位运算符(含短路运算)
逻辑运算
boolean pp=true;
boolean qq=false;
System.out.println("pp&&qq:"+(pp&&qq));//与
System.out.println("pp||qq:"+(pp||qq));//或
System.out.println("!(pp&&qq):"+(!(pp&&qq)));//非
//短路运算:如果与运算第一个为false,后面不执行,或运算也有相似的
int cc=4;
boolean bb=qq&&(cc++<4);
System.out.println(cc);//可以看到cc并未改变,故而可验证短路运算
注意图中的写法,加号其实有结合的意思
位运算
System.out.println("-----------------位运算符相关--------------------");
int aaa=0b0000_0101;
int bbb=0b1010_1111;
System.out.println(aaa|bbb);//位或
System.out.println(aaa&bbb);//位与
System.out.println(aaa^bbb);//位亦或,相同为0,不同为1
System.out.println(~bbb);//未非
System.out.println(2<<3);//0000 0010中1左移三位
System.out.println("重点:左移为*2,右移为除2");
作为一名单片机玩家,这玩意真的都用吐了
拓展运算符(+=,-=,*=,/=)
略,c语言都学吐了
连接运算符拓展
System.out.println("-----------------连接运算符相关--------------------");
System.out.println(""+1+2);
System.out.println(1+2+"");
当第一个元素为string时,后面的加号默认为连接符,会将后面的数字转化为字符并连接
三元运算符
System.out.println("-----------------三元运算符相关--------------------");
int xxx=80;
int yyy=70;
System.out.println((xxx>60)?"及格": "不及格");//问号前为符合条件语句
包机制
包的本质其实就是一个文件夹
注意红字
其实就是这一个个文件夹,用以区分程序
如果放在包下面,这句语句不能省!!!,好好了解结构
有的时候有的函数只有在相应的包里面才有,所以需要导入,导入语法
import +类的包路径;(而且要放在package的下面)
尽量不要去让包里的名字重复,因为这样的话导入的时候会报错的
通配符,import +包路径+* 作用:将包中所有的类全部导入!!!!初学者神器啊2333
重要的一份资料,请认真阅读
认真阅读,事关规范与基础的!!!!