Unicode: 65~90为26个大写英文字母(A-Z),97~122号为26个小写英文字母(a-z)
1.1 Java简介Java:是面向对象的语言 咖啡logo jdk包含jre
Jvm:java虚拟机 跨平台的实现的工具
Java 的平台类别
-
JavaSE(JavaStandardEdition):包含JDK和JRE,JDK是Java Development Toolkit的缩写,即Java开发工具箱,JRE为Java Runtime Environment的缩写,即Java运行环境
-
JavaEE(Java Enterprise Edition):规定了用于企业级应用开发的技术规范,这些规范主要包括:Servlet、JSP、JSF、EJB、JCA等,企业版的规范通常可以分为API(Application Programming Interface)和SPI,即编程接口和服务接口,程序员关注的是API,企业版包含JavaSE的全部内容,在JDK1.5之前,JavaEE被称为J2EE.
-
开发工具: IDE(集成开发环境)
- 作为一个比较彻底的面向对象语言,Java操作的基本单元为对象。一个对象将一组逻辑关联的数据封装到一起并允许外界通过其方法来操作这些数据。在设计一个Java应用时,设计师将应用的功能分解到若干相关联的对象中,然后再将这些对象按照特定的业务规则组织到一起。
- 类是对象的类型,要完成程序的功能,在运行时需要创建若干类的多个对象(或实例),我们通常所说的面向对象的分析和设计就是指类的分析和设计。
- Java中的对象类型包括:基本类型、系统类型和应用自定义类型。其中基本类型和系统类型内置在JDK中,只要安装了JDK就可以使用。应用自定义类型是开发者针对某个具体的应用定义的类型。
- 包机制:包的本质就是文件夹 公司域名倒置:com.baidu.www 包里可以套着包 .*通配符 导入这个包下所有的类 可以到自己创建的包
任何一种计算机语言都有标识符和关键字
-
变量命名规则:
-
以英文字母、下划线或者$开头,不能以数字开头
阿里巴巴开发手册:不能以下划线或美元符号开始和结束
-
不能使用java关键字
-
驼峰命名(大驼峰:类名 接口 注解 小驼峰:方法 变量(参数) )
-
英文名词
-
关键字
true ,false和null都不是关键字,关键字小写
break
class,case
do,default
extends
finally final
import,interface,implements
new,null
protected,public
super,static,switch,synchronized
this,throw,throws
void
2.2 访问限定符-
public为使用频度最高的访问限定符号
-
修饰符用来定义类、方法或者变量,通常放在语句的最前端
// 单行注释
```java
package com.liu.www;
public class Demo {
String name;
public String test(String name) throws Exception{
return name;
}
}
idea中生成javadoc:
(3条消息) IntelliJIDEA生成JavaDoc_cai454692590的博客-CSDN博客_idea 生成javadoc
3. 数据类型java强类型语言:所有变量必须定义了才能用
安全性高 速度慢点 代表着一部分空间(在内存中指定一部分空间),所以变量是程序中最基本的存储单元
变量就是可以变化的量 变量的类型可以是基本类型,也可以是引用类型,自定义类型(类的名字)
- 变量类型
- 变量名
- 作用域
- 局部变量:局部变量生命周期从大括号开始到大括号结束,在方法中定义
- 成员变量
- 实例变量:从属于对象(自己这个类),所以可以被类中方法直接调用
- 静态变量
常量:特殊的变量,定义一个值之后就不会改变 大写字母
package task_1;
public class A {
static int number;//类变量(又叫静态变量) 前面必须有static(静态的) 可以直接引用
static final int SAL=34;//final 定义一个常量
String name;//实例变量 有默认值,不用初始化值
//main方法
public static void main(String[] args) {
int i=0;//局部变量必须声明和初始化值(包含后来给值)
System.out.println(i);
//变量类型:自己这个类 变量名== new相当于拿到自己了
A a=new A();
System.out.println(a.name);
System.out.println(number);
System.out.println(sal);
}
//其他方法
public void method(){
boolean tag=false;//局部变量 必须写在方法中
}
}
3.1 八大基本类型初值
代码测试:
package day3;
//为啥方法里面不给赋值 因为方法不一定被调用 如果虚拟机给值 都压到栈里面 栈承受不了
import java.util.Date;
public class Example_2 {
//静态 经常被调用的方法和变量加了静态 虚拟机启动就会加载内存
public static int age;//0
public static boolean married;//false
public static double price;//0.0 float 也是0.0
public static char sex;//无值
public static Date date;//null 引用类型的默认值都是null
public static void main(String[] args) {//主方法在这
System.out.println(age);
System.out.println(married);
System.out.println(price);
System.out.println(sex);
System.out.println(date);
}
}
输出结果:
0
false
0.0
null
Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type),剩下的都是引用类型(reference type),Java 5枚举类型也是引用类型。
字符数据类型 - char:表示单个字符,比如单个英文字母,单个汉字等。(性别)
A-Z:65-90; a-z:97-122
字符串不是基本数据类型,标准Java类库中预定义类型
java.lang.String(简称String)。
面试题
public static void main (String[] args) {
String classFile = "com.jd.". replaceAll(".", "/") + "MyClass.class";
System.out.println(classFile);
}
输出结果:///MyClass.class
于replaceAll方法的第一个参数是一个正则表达式,而"."在正则表达式中表示任何字符,所以会把前面字符串的所有字符都替换成"/"。如果想替换的只是".",那么久要写成"\."., 一开始没看懂
-
concat:合并多个数组;合并多个字符串
-
trim:去掉两端空格
-
substring:截取字符串 左闭右开 字符串也是0开始 第二个参数不给的话就是一直到最后都截取完
- equals:返回值是一个Boolean
String str1="would you "; String str2="marry me "; String str3=str1.concat(str2); String str4=str1.trim(); String str5=str1.substring(1,4);//输出结果就是4-1=3 boolean bool=str1.equals("12"); System.out.println(bool); System.out.println(str3); System.out.print(str4); System.out.println("kevin"); System.out.print(str5);输出结果:
false
would you marry me
would youkevin
oul
一个字节8位,2^7=128 16*16=256
开发者仍然喜欢使用int整型来表述整型的值, long数字结尾加个大写的L。
浮点数据类型 float double- 默认类型是double
- float数据是32位的长度(4Byte)
- double数据是64位的长度8Byte
- 一个float数据末尾加f或F
java强类型语言:不同类型的数据在一起要转换成同一类型才能运算
定义数据大小(位数)由低到高分别是:
一个字节等于八位
byte(8 1),short (16 2),char(16 2),int(32 4),long(64 8),float(32 4),double(64 8)
package task_1;
public class A_2 {
public static int age;
public static void main(String[] args) {
// Random random=new Random();
// int x=random.nextInt(200);
// System.out.println(x);
// int a=10;
// int b=20;
// int c=30;
// int d=40;
// System.out.println(a+b);
// System.out.println(a-b);
// System.out.println(a*b);
// System.out.println(a/b);0
// System.out.println(a/(double)b); 0.5
// System.out.println((double)(a/b)); 0.0
boolean tag=false;
boolean address=tag;
int x=128;
byte y= (byte) x;//由高转到低,内存溢出,需要强制转换 格式:(类型)变量名
double z=x;//由低到高,能放得下,自动转换
System.out.println(x);//128
System.out.println(y);//-128
System.out.println(z);//128.0
System.out.println((int) 23.4);//23
System.out.println( (int) -45.7f);//-45
char keke='a';
int toto=keke+1;
System.out.println("==================");
System.out.println(toto);//98
System.out.println("==================");
System.out.println((char) toto);//b
//操作比较大的数的时候,注意溢出问题
//jdk7的新特性,数字之间可以用下划线分割
int money=1_000_000_000;
int year=20;
int total=money*year;
long total2= money*year;
long total3=(long) money*year;
System.out.println("==================");
System.out.println(money);
System.out.println(total);//-1474836480,计算的时候溢出了
System.out.println(total2);//-1474836480,money*year默认是int,转换成long之前已经溢出了
System.out.println(total3);//先把一个数转换成long
System.out.println(Math.pow(2,32));
}
}
3.2 运算符
字符串连接符:
//字符串连接符 +,只要+左边出现String类型的,其他类型都会自动转成String类型
System.out.println(a+b);//30
System.out.println(""+a+b);//1020
System.out.println(a+b+"");//30
优先级:()
String string="2345"; int d=76; System.out.println(string+d); //输出结果:234576 //char转换成int char i='1'; System.out.println(i-48);//1 0的ASCLL值是48算术运算符
+ - * / %(取余 模运算) 二元运算符 ++,--:一元运算符 很多运算会使用工具类来计算 Math类
//加法
long a=1234578;
int b=234;
short c=10;
byte d=1;
double e=3456.34;
float f=34.3f;
char g='3';
System.out.println( (a+b+c+d+f));//float
System.out.println(b+c+d);//int
System.out.println((c+d+g));//int
总结:除了 double,float,long,int(含哪个类型就是哪个),含有其他类型的相加,类型都为int
//++,--自增自减运算符
double x=1;
// double y=x++;
// 隐藏一句:x++ x=x+1
// System.out.println(x);//2.0e
// System.out.println(y);//1.0
隐藏一句:x++ x=x+1
double z=++x;
System.out.println(x);//2.0
System.out.println(z);//2.0
public static void main(String[] args) {
int i = 0;
i = i++ + i ;
System.out.println(i);//1
}
赋值运算符
扩展赋值运算符: +=,-=,*=,/=
//a=10 把10赋值给a 赋值给变量 a+=b;//a=a+b, a-=b;//a=a-b, a*=b;//a=a*b, a/=b;//a=a/b关系运算符:
> < >= <= != instanceof
返回结果为 Boolean
逻辑运算符
&&(逻辑与) ||(逻辑或) !
public class Demo1 {
public static void main(String[] args) {
//短路运算
int a=6;
boolean b=(a<4)&&(a++<7);
System.out.println(a);//6 说明后面没有执行,执行到(a<4)就不执行了
System.out.println(b);//false
}
}
条件运算符:
三元运算符
表达式?返回值1 :返回值2位运算符
& | ^ ~
public class Demo1 {
public static void main(String[] args) {
System.out.println(2<<3);//16 2*2^3
System.out.println(16<<3);//128 16*2^3
}
}



