java基本知识
1、java概述
1.1 java开发工程师编写软件:
(1)互联网:电商、P2P等等;
(2)企业级应用:ERP,CRM,BOS,OA等等;
ERP(Enterprise Resource Planning):即企业资源计划;
CRM(Customer relationship management):客户关系管理
BOS(baidu Object storage):对象存储;
OA(Office Automation):办公自动化;
(3)基础——javaSE标准版;企业——javaEE企业版;
1.2 java开发环境概述:
编写java程序前,需要安装java开发环境,JDK:java Development Kit;
JDK下载
1.3 jdk与jre:
jdk:java Development Kit;java开发环境,针对开发者;
jre:Java Runnning Environment;java运行环境,针对java使用者;
1.4 java跨平台特性:
(1)平台包括有windows,linux,mac OS;
(2)java程序可以在任意操作系统上运行,编写之后可以在任意系统上运行;
(3)java实现跨平台是依赖于java的虚拟机JVM(Java Virtual Machine);
(4)注意:java程序跨平台,但是虚拟机JVM是不跨平台的,即JVM相当于一个模拟器;
2、java程序介绍
2.1 java应用程序的编写流程:
(1)源文件:编写java源文件,扩展名为.java;
(2)编译:将源文件变异成字节码文件,扩展名为.class;
(3)运行:最后解释器来运行字节码文件;
2.2 java环境变量设置:
windows中,可以在环境变量中新建一个Java_Home
,变量值为安装处的jdk目录,然后在用户path中编辑%Java_Home%/bin
;
或者直接在环境变量中的用户path中添加C:\Program Files\Java\jdk-10.0.1\bin
2.3 java编译运行:
java编译:java -d D:\virtualbox_share\Java\helloworld.java
注意程序中的类名需要和文件名相同,且大小写一致,后缀名为.java;生成.class字节码文件;否则会出现类是公共的,应在名为 的文件中声明的错误;
java运行:java helloworld
注意运行时不要添加任何后缀,否则会出现无法加载类的错误;
/*
定义了一个类;
定义了一个方法;
*/
public class helloworld{
public static void main(String[] args){
System.out.println("HelloWorld");
}
}
编辑器:建议编写程序时使用notepad++;然后编译运行直接用jdk即可;
也可以用sublime;
2.4 关键字:
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
2.5 标识符规则:
除了关键字以外的都是标识符;
(1)由字母大小写共52个,数字10个,下划线,和$
组成;
(2)注意:不能用数字开头,严格区分大小写;
(3)名称可以是_abc
, oa
, a0
, a$a
, _void
(4)好的命名方式是:类的名字尽量用单词首字母大写,方便识别,例如:Scikit-learn,AddStudent,方便识别
3、数据类型与数据量
Java中的数据量分为常量和变量,常量就是不变的量,变量就是可以改变的量
数据类型:整型int,浮点数float,字符型string,布尔型bool;
整数类型:十进制(13,15);二进制(0b1011);十六进制(0x23a3,0xaa);八进制(077,016);
小数类型:1.0、-5.235、6.234;
布尔类型:true,false;
字符类型:例如'a', 'A', '0', '加';(用单引号包含)
字符串类型:“nfafn”, "是我的事", “null”;(用双引号包含)
变量:是内存中的小容器,用来存储数据,有个内存地址只能存储一个数据;计算机存储的最小信息单元叫“位”,而计算机最小的存储单元是字节(即8位);
3.1 数据类型:4类8种
变量必须要有明确的数据类型,指定类型的变量只能装载指定的数据;
java中默认的整数类型是int类型;
例如:122414就是整型,后面加个L,即122414L就是long型;
java默认的浮点型是double类型;
例如:5.28就是double型,后面加个F,即5.28F就是float类型;
3.2 变量创建的三要素:
内存中存储数据,但是存储数据前必须规定类型和名称,然后划分存储区域,存储数据;
数据类型 变量 = 变量值
即 int a = 100
;
/*
定义出所有数据类型的变量;
四类八种;
*/
public class Variable{
public static void main(String[] args){
//定义整数类型,字节类型 byte类型,1个字节
byte a_byte = 16;
//System.out.println("byte类型");
System.out.println(a_byte);
//短整型数据,short类型,2个字节;
short a_short = 14143;
System.out.println(a_short);
//定义int类型;4个字节
int a_int = 167111111;
System.out.println(a_int);
//定义long类型,L,8个字节
long a_long =124894149854981L;
System.out.println(a_long);
//浮点型数据,单精度float类型,4个字节
float a_float = 3.32189474F;
System.out.println(a_float);
//浮点型数据,双精度double类型,8个字节
double a_double = 3.32189474;
System.out.println(a_double);
//字符类型,2个字节
char a_char = 'g';
System.out.println(a_char);
//布尔类型,boolean,1个字节
boolean a_bool = true;
System.out.println(a_bool);
//再加一种非基本数据类型的字符串类型;字符串属于引用类型
String s = "java和python类似,赶紧把java学完;";
System.out.println(s);
}
}
变量注意事项:
(1)使用前必须初始化;
(2)作用域只在某个函数内部,即为局部变量;
(3)变量不允许重复定义;——数据类型不重定义,数据值可以发生改变;
3.3 数据类型转换
范围小的数据类型值,可以直接转换为范围大的类型;(double->float正确,double->int正确)
范围大的数据类型值,不能直接转换为范围小的类型;(int->long错误,float->long 错误)
/*
数据类型的转换;
自动:取值范围小的类型,自动转成取值范围大的类型;
*/
public class DataConversion{
public static void main(String[] args){
double d = 1000; //出现类型自动转换,int自动转换为double;
System.out.println(d);
int i = 100;
double d2 = i; //出现类型自动转换,int自动转为double;
System.out.println(i);
byte b = 10;
int j = b; //出现类型自动转换,byte自动转换为int类型;
System.out.println(j);
}
}
强制数据类型转换:
范围小的数据转换为范围大的数据;
/*
数据类型的强制转换
强制:数据类型取值范围大的,转成取值范围小的;
语法:
被转后的数据类型 变量名 = (被转换后数据类型)要被转的数据;
*/
public class DataCast{
public static void main(String[] args){
double a_double = 342;
int a_int = (int)a_double;
System.out.println(a_int);
byte a_byte = (byte)129; //超出范围2位,从-128开始向右变;
System.out.println(a_byte);
}
}
4、运算符
4.1 算术运算符:
/*
算术运算符
+ 加法,连接
- 减法
* 乘法
/ 除法
% 取模,获取余数
++ 自增1
-- 自减1
*/
public class Operator{
public static void main(String[] args){
// + 连接作用,遇到字符串时,作用是将一个字符串和其他数据连接起来
int a = 25;
String s = "你猜他多大:";
s = s + a;
System.out.println(s);
//除法运算和取模运算
int remainder = 45;
int divisor = 7;
System.out.println(remainder/divisor); //6
System.out.println(remainder%divisor); //3
//自增运算
int sum = 1;
++sum;
int y = sum++;
System.out.println(sum); //3
System.out.println(y); //2
}
}
4.2 赋值运算符:
/*
赋值运算符
=
+= -= *= /= %=
*/
public class Operator_Assignment{
public static void main(String[] args){
// = 赋值运算,将右面的值,赋值给左边的变量
int a = 3;
a = a + 3;
System.out.println(a);
// += 辅助运算符
int b = 3;
b += 9;
System.out.println(b);
byte b_byte = 1;
b_byte += 1; //实际上相当于b_byte = (b_byte)(b_byte+1)
System.out.println(b_byte);
}
}
4.3 比较运算符:
/*
比较运算符:
计算结果只有true,false
== 比较符号两边的数据
!= > < >= <=
*/
public class Operator_Comparsion{
public static void main(String[] args){
int a = 3;
int b = 4;
System.out.println(a=b);
System.out.println(a==b);
System.out.println(1!=3);
System.out.println(a>b);
}
}
4.4 逻辑运算符
与或非,短路与,短路或;
/*
逻辑运算符:对两个boolean类型数据之间进行运算
结果也是boolean类型
& 有一个是false,则输出结果为false;
| 有一个是true,则输出结果为true;
! 取反
^ 异或,相同取true,不同取false;
&& 短路与,一边是false,则另一边不运行;
|| 短路或,一边是true,另一边不运行
*/
public class Operator_logic{
public static void main(String[] args){
System.out.println(false & true);
System.out.println(false | true);
System.out.println(false ^ true);
System.out.println( !true);
int i = 3;
int j = 4;
System.out.println(3>4 && ++j>2);
System.out.println(3>4 || ++j>2);
}
}
4.5 三元不等式:
/*
三元运算符
公式:布尔表达式 ? 结果1 : 结果2
*/
public class Operator_Ternary{
public static void main(String[] args){
System.out.println(3>5 ? 99:88);
System.out.println(1==1 ? "相等": "不等");
}
}
5、商场库存案例与分析
- (1)清单顶部为固定数据,直接打印即可;
- (2)清单中部为商品,为变化的数据,需要记录商品信息后,打印;
其中包含了4个属性:
品牌型号:即商品名称,String型;
尺寸:物品大小,double型;
价格:物品单价,double型;
存库数:这一项为每种商品的库存个数,int型;
- (3)清单底部包含了统计操作,需要经过计算后打印;
/*
实现商品库存清单案例
步骤:
1、实现表头,是固定数据,直接输出语句
2、实现表格中间
3、实现表格底部,一部分数据固定,另一部分数据商品数据进行科学计算;
*/
public class Shop_In_Stock{
public static void main(String[] args){
//输出表头
System.out.println("---------------商场库存清单--------------");
System.out.println("品牌型号\t尺寸\t价格\t存库数");
//输出表格中间
String macBrand = "MacBookAir";
double macsize = 13.3;
double macprice = 6988.88;
int macstock = 5;
String ThinkpadBrand = "ThinkpadT450";
double Thinkpadsize = 14.0;
double Thinkpadprice = 5999.99;
int Thinkpadstock = 10;
String ASUSBrand = "ASUS-PL5800";
double ASUSsize = 15.6;
double ASUSprice = 4999.5;
int ASUSstock = 18;
System.out.println(macBrand+"\t"+macsize+"\t"+macprice+"\t"+macstock);
System.out.println(ThinkpadBrand+"\t"+Thinkpadsize+"\t"+Thinkpadprice+"\t"+Thinkpadstock);
System.out.println(ASUSBrand+"\t"+ASUSsize+"\t"+ASUSprice+"\t"+ASUSstock);
//输出表格底部
int totalstock = macstock + Thinkpadstock + ASUSstock;
double Amountstock = macprice*macstock + Thinkpadprice*Thinkpadstock + ASUSprice*ASUSstock;
System.out.println("总库存数:"+totalstock);
System.out.println("库存商品总金额:"+Amountstock);
}
}