javaSE基础
C&C++
c语言 1995年诞生
贴近零件 运行几快 效率极高
指针和内存管理 较为复杂 容易错误
c++ 1982年诞生
相比较难
面对对象
java
编写一次 到处运行 JVM
JEE(服务器) J2ME(手机) J2SE(桌面)
构建工具:Maven
应用服务器:Tomcat
Web开发(框架):Spring、myBatis
开发工具:Eclipse、idea
ruby、php、python(简单的开发)
2006 通过Hadoop 进入大数据领域
2008 安卓 java迅速占领手机端
特性和优势
简单性 c++语法的纯净版 语法基于C
面向对象 是基于对象的 重点是对象和对象的接口上 模拟的是人去学习
可移植性 跨平台 写一次到处运行
高性能
分布式
动态性 反射机制
多线程 交互行为
安全性 可以构建放病毒防篡改的系统 吸收了C的优点 不易崩溃
健壮性
java的三大版本
Java SE :标准版(桌面程序,控制台开发)
Java ME:嵌入式开发
Java EE:E企业级开发(Web端,服务器开发)
JDK、JRE、JVM
JDK :Java Development Kit (开发者工具)企业的主流是 JDK 7、JDK 8
JRE :Java Runtime Environment (运行时环境)
JVM :Java Virtual Machine
Holle
软件:notepad++
-
新建一个文件夹,存放代码
-
新建一个java文件
文件后缀改为.java最基础的默认类代码:
public class Holle{ public static void main(String[] args){ System.out.print("Holle,World!"); } }
使用cmd命令 javac ***.java编译 没问题后 使用命令 java+文件名运行
Java程序的运行机制
-
编译型 操作系统 c/c++
-
解释型 java scprit
IDEA 集成开发环境
具备代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套都可称为集成开发环境
Java 学习
java 基础语法
注释、标识符、关键字
注释
单行注释 //
多行注释 /**/
文档注释 /** */
标识符
Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
所有的标识符都是以字母,¥、_开始
public class Demo1 {
public static void main(String[] args) {
String hello = "yjy";
String 名字 ="yjy";
System.out.println(名字);
}
}
关键字
不能使用关键字作为变量名或方法名。
数据类型
强类型语言
要求变量的使用严格规定,所有的变量都必须定义后才能使用。(安全性高,速度慢)
弱类型语言
Java的数据类型分为两大类
基本类型(primitive type)
浮点数最好完全使用浮点数进行比较或者使用BigDecimal(数学工具类)
public class Demo02 {
public static void main(String[] args) {
//八大基础数据类型
int num1 = 10;
byte num2 = 20;
short num3 = 30;
long num4 = 30L;
float num5 = 5615615615616515615615616510.13151565165156156f;
double num6 = 3.1415926;
//字符
char name = '岳';
//字符串
//String name1 ="岳嘉阳";
//布尔值:是非
boolean user = true;
boolean user2 = false;
}
}
引用类型(reference type)
字节
1bit=1位
1字节 1B= 8b 8位
1024B = 1KB
字符:是指计算机中使用的字母、数字、字和符号
扩展
public class Demo03 {
public static void main(String[] args) {
// 整数扩展 进制 二进制0b 十进制 八进制0 十六进制0x
int n = 10;
int n2 = 011;
int n3 = 0x10;
System.out.println(n);
System.out.println(n2);
System.out.println(n3);
System.out.println("===================================");
//=========================================================
// 浮点数扩展 float double
float i = 0.1f;//float 有限 离散 舍入误差 大约 接近但不等于
double d = 0.1;
System.out.println(i == d);
System.out.println(i);
System.out.println(d);
//输出结果:
false
0.1
0.1
//=========================================================
//字符扩展
System.out.println("=======================================");
char s = 'a';
char s2 = '中';
System.out.println(s);
System.out.println((int) s);
System.out.println(s2);
System.out.println((int) s2);
//所有的字符本质还是数字
//编码 Unicod 2字节 65536 Excel 2^16=65536
char s3 = '\u0061'; //a
System.out.println(s3);
//转义字符
//\t 制表符
// \n 换行
System.out.println("Holle\nworld");
System.out.println("=======================================");
String na = new String("holle,world");
String nb = new String("holle,world");
System.out.println(na == nb);
String nc = ("holle,world");
String nd = ("holle,world");
System.out.println(nc == nd);
//对象 从内存分析
//输出结果
false
true
//布尔值扩展
boolean ab = true;
if (ab == true) {}
if (ab) {} //老手
//if (ab == true) {} = if (ab) {}
//代码要精简易读
}
}
类型转换
运算的时候会用到类型转换
- 强制转换 (类型)变量名 由高–低
- 自动转换 低–高
注意点:
1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.在把高容量转换到低容量的时候,强制转换
4.在把低容量转换到高容量的时候,自动转换
5.转换的时候可能存在内存溢出,或者精度问题!
public class Demo04 {
public static void main(String[] args) {
long i = 1999999;
short b = (short) i;//注意内存溢出
short s =1288;
long n = s;
//强制转换 (类型)变量名 由高--低
//自动转换 低--高
System.out.println(i);
System.out.println(b);
System.out.println("=============================");
System.out.println(s);
System.out.println(n);
/*
注意点:
1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.在把高容量转换到低容量的时候,强制转换
4.在把低容量转换到高容量的时候,自动转换
5.转换的时候可能存在内存溢出,或者精度问题!
*/
System.out.println("=============================");
System.out.println(29.23);
System.out.println((int)29.23);
int money = 10_0000_0000;//JDK7的新特性,数字之间可以用下划线_分割
int years = 20 ;
long moner = 10_0000_0000;
int yearmoney = money * years ;//计算时溢出了
long yearmoner2 = moner * years ;//赋值转换之前已经将两个int数计算,后才赋值给long,所以结果还是两个int相乘的数
long yearmoney3 = (long)money * years ;//先把一个数转换为long进行运算,结果会是long类型
System.out.println(yearmoney);
System.out.println(yearmoner2);
System.out.println(yearmoney3);
}
}