day03-java
基础语法
注释
注释:不执行
单行注释://
多行注释:/* */
文档注释:/** /
eg:
package xcj_study.base;
public class Helloworld {
public static void main(String[] args) {
//输出一个helloworld
/*多行注释
123
123
*/
//javadoc:文档注释 /** /
/**
* @Author xcj_study
*/
System.out.println("hello world");
System.out.println("xcj_study");
}
}
关键字
标识符:以A-z/a-z/$美元符/下划线为开头
关键词如下
abstract assert boolean break byte
case catch char class const
continue default do double else
enum extends final finally float
for goto if implements import
instanceof int interface long native
new package private protected public
return strictfp short static super
switch synchronized this throw throws
transient try void volatile while
- 不能使用关键字作为变量名或方法名。
- 标识符大小写敏感
数据类型(java属于强类型语言)
变量 :数据类型 变量名 = 值;
基本类型
(1)整数类型:byte、short、int、long (byte 一个字节 short 两个字节
int 四个字节 long 八个字节 变量值末尾加L)
(2)浮点类型:float、double (float 四个字节 变量值末尾加F)/(double 八个字节 )
(3)字符类型:char 两字节
(4)布尔类型:boolean(true/false)
引用类型
- 类
- 接口
- 数组
字节
- 位(bit)最小单位
- 字节(byte)用B表示计算机处理的基本单位
- 1B = 8bit;
- 1bit = 1位
- 1byte= 1字节
- 1024B = 1KB;
- 1024KB = 1M;
- 1024M = 1G;
package xcj_study.base;
public class Demo02 {
public static void main(String[] args) {
//整数
//Integer//类
int num = 10;
int i1 = 10;//最常用
byte i2 = 20;
short i3 = 30;
long i4 = 40L;//long类型在数字后面加L
//小数:浮点数
float i5 = 50.1F;//Float类型在数字后面加加F
double i6 = 1.1315678345;
//字符
char a = 'A';
//字符串 String不是关键词
String name = "xcj_study";
//布尔值
boolean fals = true;
}
}
进制
整数扩展 进制 二进制0b 十进制 八进制 十六进0x
实例:
package xcj_study.base;
public class Demo03 {
public static void main(String[] args) {
//整数扩展 进制 二进制0b 十进制 八进制 十六进制0x
int i = 10;
int i2 = 010;//八进制
int i3 = 0x10;//十六进制0-9,A-F
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
//浮点数拓展 银行业务,钱
//BigDecimal 数学工具类
//float 有限 离散,舍入误差 大约接近不等于
//最好完全避免浮点数进行比较
//double 无线
float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d);//false
System.out.println(f);
System.out.println(d);
float d1 = 12938383391f;
float d2 = d1+1;
System.out.println(d1==d2);//true
//字符拓展
char c1 = 'a';
char c2 = 'b';
System.out.println(c1);
System.out.println((int)c1);//强制转换
System.out.println(c2);
System.out.println((int)c2);
//字符本质是数字
//编码 Unicode 2字节 0-65536 excel 0-65536
char c3 = '\u0061';
System.out.println(c3);//表示a
//转义字符
//\t //制表符
//\n 换行
System.out.println("hello,\t world");
String sa = new String("hello world");
String sb = new String("hello world");
System.out.println(sa==sb);//不相等
String sc ="hello world";
String sd ="hello world";
System.out.println(sc==sd);//相等
//内存分析
//布尔值扩展
boolean flag = true;
if (flag==true)//新手
//if(flag)//老手
{
}
}
}
类型转换
低--------------------------------------------------------------->高
byte,short,char,->int->long->float->double
运算中,不同类型的数据转换成相同的类型再运算
实例:
package xcj_study.base;
public class Demo04 {
public static void main(String[] args) {
int i = 128;
byte b = (byte) i;//内存溢出byte最大值127
//强制转换 (类型)变量名 从高到低
double c = i ;
System.out.println(c);
//自动转换 从低到高
System.out.println(i);
System.out.println(b);
/*
注意
1不能对布尔类型进行转换
2 不能把对象类型转换成不相干的类型
3 把大容量转换到低容量的时候,强制转换
4 转换的时候会出现溢出,或者精度问题
*/
//精度问题
System.out.println((int)23.7);
System.out.println((int)-49.89f);
char c1 = 'a';
int d = c1+1;
System.out.println(d);
System.out.println((char) d);
//操作比较大的数注意溢出,数字间可以用下划线分割
int money = 10_0000_0000;
int years = 20;
int total = money* years;
long total1 = money* years;
System.out.println(total1);//默认是int,转换之前已经存在问题
System.out.println(total);//-1474836480, 计算的时候溢出了
long total2 = money*((long)years);//先把一个数转换成long
System.out.println(total2);
}
}
变量
- 变量要声明类型
- 变量是程序中最基本的存储单元,要素:变量名,变量类型,作用域
变量作用域
- 类变量 (需要加关键字static)
- 实例变量 (无关键字)
- 局部变量(在方法里)
类变量
常量:初始化之后不变
关键词:final 常量名=值;
变量命名规范
-
类成员变量:除第一个单词以外,后面单词首字母大写 eg:lastName
-
常量:大写字母和下划线 eg:MAX_VALUE
-
类名:首字母大写和驼峰原则
-
方法名:首字母小写和驼峰原则
package xcj_study.base;
public class Demo05 {
//main方法
//属性:变量
/*实例变量,方法的外面,类的里面。从属于对象,如果不初始化,这个类型默值 0 0.0 u0000
布尔值默认为false,
除了基本类型,默认值都为null
*/
//类变量 加static
static double salary = 2500;
//修饰符,不存在先后顺序
public static final double PI = 3.14;
String name;
int age;
public static void main(String[] args) {
//局部变量,在一个方法里面存在,使用前必须声明和初始化
int c = 10;
//int a,b,c;
int a = 1;//程序可读性
String name = "xcj_study";
char x = 's';
double pi = 3.14;
//变量类型 变量名 = new xcj_study.base.Demo05
Demo05 demo05 = new Demo05();
System.out.println(demo05.age);
//类变量 加static
System.out.println(salary);
System.out.println(PI);
}
//其他方法
public void add()
{
}
}
运算符
基本运算符
算术运算符:+,-,*,/,%,++,–
赋值运算符:=
关系运算符:<,>,>=,<=,==,!=,instanceof
逻辑运算符:&&,||,!
位运算符:&,|,^,~,>>,<<,>>>
条件运算符:?:
扩展赋值运算符:+=,-=,*=,/=
运算符的实例
package xcj_study.operator;
public class Demo01 {
public static void main(String[] args) {
//二元运算符
int a = 10;
int b = 10;
int c = 10;
int d = 10;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/(double)b);
long a1 = 123123123123L;
int b1 = 123;
short c1 = 10;
byte d1 = 8;
System.out.println(a1+b1+c1+d1);//long,有long(double)结果就是long(double)类型,无long(double)结果就是int.
System.out.println(b1+c1+d1);//int
System.out.println((double) c1+d1);//int
//关系运算符 返回结果是正确、错误 布尔值表示
int e = 10;
int f = 20;
int g = 31;
System.out.println(e>f);
System.out.println(e<f);
System.out.println(e==f);
System.out.println(e!=f);
System.out.println(g%e);//取余,模运算
//++ -- 自增,自减 一元运算符
int e1 = 3;
int f1 = e1++; //执行完折行代码后,先给b赋值,再自增。所以b是3
//e1++ = a + 1;
int g1 = ++e1; //执行完折行代码前,先自增,再给b赋值.
System.out.println(e1);
System.out.println(f1);
System.out.println(g1);
//幂运算 很多运算使用工具类运算
double pow = Math.pow(3, 2);
System.out.println(pow);
//逻辑运算符 与(and)或(or)非(取反)
boolean bo = true;
boolean bl = false;
System.out.println("bo && bl:"+(bo&&bl));//逻辑与运算:两个变量都为真,结果才为真
System.out.println("bo || bl:"+(bo||bl));//逻辑或运算,两个变量有一个为真,结果才为真
System.out.println("!(bo && bl):"+!(bo&&bl));//如果为假才为真
//短路运算 逻辑与运算第一个为假即结束判断
//位运算
/*
A = 0011 1100
B = 0000 1101
A&B //同时为1则为1,其余为0 即0000 1100 与
A|B //对应位都为0,则为1,即 0011 1101 或
A^B //对应位相同为0,不同为1 即 0011 0011 异或
~B //取相反 即 1111 0010 非
面试:算2*8 = 16 最快
左移 << 每左移一位乘2
右移 >> 每右移一位除2
*/
System.out.println(2<<3);
//面试:字符串连接符 + ,在加号两边出现String类型的就会进行连接
System.out.println(""+a+b);
System.out.println(a+b+"");
System.out.println("abc"+a+b);
System.out.println(a+b+"abc");//字符串在加号前面会与后面的拼接,在加号后面会对前面的先进行运算再拼接
//三元运算符 x?y:z x结果为真,则为y,否则为z
int x=80;
String type = x < 60?"不及格":"及格";
System.out.println(type);
}
}
包机制
包实质是文件夹 一般用公司的域名倒写作为包名 eg:www.baidu.com 包名是 com.baidu.www
定义:package ````````
导入:import package1 ``````/ (import `````````* 指导入包所有类)
.out.println(a+b+“”);
System.out.println(“abc”+a+b);
System.out.println(a+b+“abc”);//字符串在加号前面会与后面的拼接,在加号后面会对前面的先进行运算再拼接
//三元运算符 x?y:z x结果为真,则为y,否则为z
int x=80;
String type = x < 60?"不及格":"及格";
System.out.println(type);
}
}
## 包机制
包实质是文件夹 一般用公司的域名倒写作为包名 eg:www.baidu.com 包名是 com.baidu.www
定义:package ````````
导入:import package1 ``````/ (import `````````* 指导入包所有类)