文章目录
java
若java文件中包含几个类,就会产生几个class文件,所以产生了3个class文件
//1.public class Hello 表示Hello是一个类,是一个public公有类
//2.Hello{ }表示一个类的开始和结束
//public static void main(String [] args),表示一个主方法,也是程序的入口
public class Hello {
//编写一个main方法
public static void main(String[] args){
System.out.println("hello,world12313");
}
}
class Dog {
//一个源文件中最多只能有一个public类。也可以将也可将main方法写入public类中,
//指定运行非public类,这样入口方法就是非public的main()方法
public static void main(String[] args){
System.out.println("myname is dog");
}
}
class Tiger{
public static void main(String[] args){
System.out.println("myname is tiger");
}
}
第一章之了解篇
Dos命令
Dos命令: Disk Operating System 磁盘操作系统。
常用的dos命令
- 查看当前目录有什么 用法 ->
dir d://tmp\lnk
- 切换其他盘下 磁盘+cd 用法 ->
m: cd
- 切换上一级
cd..
- 切换到根目录
cd \
- 清屏
cls
- 文件结构
tree
- 退出Dos系统
exit
- 强制退出黑窗口
Ctrl+ C
- md 文件夹 创建目录
.
java的特点
- java 语言是面向对象的(oop)
- java语言是跨平台性质的(JVM)
- java有垃圾回收机制
为什么说java是跨平台的?
写好的代码文件是java文件,通过编译器(javac)编译成二进制class文件,再通过java虚拟机(JVM)转换成不同的平台。想运行一个开发好的Java程序,用户只需要装JRE就行
java文件–>javac编译–>class文件(字节码文件)–>Java运行->结果
环境变量的作用:为了在dos的任意目录下都可执行java和javac命令
JDK的全称是Java的开发工具包
JDK=JRE+java的开发工具(java,javac, javadoc,javaP)
JRE的全称是JAVA的运行环境,JVM的全称是java虚拟机
JRE= JVM+ java的核心类库(类)
java的代码规范
- 类,方法的注释,要以javadoc的方式来写
- 非Java Doc 的注释 ,往往是给代码的维护看的,告诉读者为什么这样写,如何修改,注意什么问题
- 使用
tab
操作,实现首行缩进,默认整体向右边移动,用shift+tab
整体向左移 - 运算符和 = 两边习惯左右各加个空格
- 源文件使用utf-8编码
- 行宽度不要超过80字符
- 代码编写 次行风格和行尾风格
其他知识
因为Java文件的文件名应该和public公开类名一致,所以按上图所说,文件名应该是Hello.java
重点
- java源文件的基本组成部分是类(class)
- java应用程序的执行入口是main()方法,public static void main(String[] args){…}
- java区分大小写
- 一个源文件最多只能有一个public类。其他类个数没有限制
- 如果源文件包含一个public类,则文件名必须按照该类名命名
第二章之初识篇
编码字节换算
1 kB = 1000 byte(字节) = 1000B = 8000bit(位) = 8000b
1 KiB =1024 bytes
1B(字节[byte])=8b(位[bit])
utf-8编码,汉字占3字节,字母占1字节
Unicode和UTF-8编码都兼容ASCII编码
kB一般用在表示网络传输速度、硬盘大小等地方,而KiB一般用在表示内存或cpu cache大小等地方。
转移字符
\t |一个制表位实现对齐功能
------------------
\n | 换行
------------------
\\ | 一个\
------------------
\r | 一个回车
------------------
代码注释和文档注释
代码注释
- 单行注释(//)
- 多行注释(/**/)
- ctrl+/ 可以多行注释
文档注释
注释内容可以被JDK提供的工具javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档
注释解析:javadoc -d m:\\tmp -author -version ss.java
数据类型
int,flaot,double的使用
-
java的各整型,浮点型有固定的范围和字段长度,不受os的影响,以确保java的可移植性
-
java的整型常量默认为int型,声明long型变量需加l或L
-
java的浮点型常量默认为double型,声明float型变量需加f或F
-
浮点数在机器中存放形式,浮点数=符号位+指数位+尾数位(尾数位部分可能丢失)
-
通常情况下,浮点型用double,因为它比float更精确。
public class type {
public static void main (String[] args) {
byte num1 = 127;
short num2 = 14;
int num3 = 1999;
long num4 = 325L;
float num5 = 1.1; //错误的,这属于大放进小
float num6 = 1.1F;
double num7 = 1.1;
double num8 = 1.1F; //可以的,这属于小放进大
double num9 = .156; //可以的,这等价于0.156
double num10 = 5.12e2;
double num11 = 512e-2;
float num12 = 5.0123456789F;
double num13 = 5.0123456789;
System.out.println(num12);
System.out.println(num13);
double num14 = 2.7;
double num15 = 8.1 / 3;
System.out.println(num14);
System.out.println(num15);
// 运算结果是小数时,别进行相等判断
// 正确判断运算结果是否相等的写法(绝对值)
if(Math.abs(num14 - num15)!=0) {
System.out.println("两数不相等,差值为"+Math.abs(num14 - num15));
}
}
}
char的使用
public class chars {
public static void main(String[] args) {
char c1 = 'a';
char c2 = '\t'; //java中允许使用变量相当于转义字符'\t'的功能
char c3 = 98; //char本质是一个整数,在输出时,会找到unicode码对应的字符。比如98代表的是b
char c4 = '祝';
char c5 = 'a' + 1;
System.out.println(c1+"的unicode字符对应是"+(int)c1);//将输出a对应的数字
System.out.println("女"+c2+"册");
System.out.println(c3);
System.out.println(c4+"的unicode字符对应是"+(int)c4);
System.out.println('a'+ 15); //char类型是可以运算的,相当于一个整数
System.out.println((int)c5);
// 因为字符a对应的ascii值为97,做数值运算得98,对应得unicode字符是b,通过int转换为98
System.out.println(c5);
//字符型存储到计算机中,需要将字符对应的码值找出,再转换成二进制存进电脑
//存储 'a' >> 码值为97 >>二进制(01100001)>> 存储到电脑,反之读取就是逆向操作。
}
}
boolean布尔的使用
布尔类型 之boolean
1.boolean类型数据只允许取值 true
和 false
2.boolean类型占1个字节
3.boolean类型适用于逻辑运算,【if ,while,do-while, for】
public class Boolean_txt {
public static void main(String [] args) {
//定义一个布尔型 pass
boolean pass = true;
if( pass == true) {
System.out.println("pass the exam");
} else {
System.out.println("fail the exam");
}
}
}
重点
1.当java程序在进行赋值或运算时,精度小的类型自动转换为精度大的数据类型。
2.多种类型的数据混合运算的时,系统首先自动将所有数据转换成容量最大的那种类型,再继续运算
3.(char,byte)和short之间不能相互转换,但这三者可以运算,在运算时就会先转换成int类型
4.自动提升原则: 表达式结果的类型自动提升为操作数最大的类型
5.强制类型:就是将容量大的数据转换成容量小的数,而会导致精度降低或溢出,这是强制转换符()
6.强制符号只针对最近的操作数有效,往往使用小括号提升优先级
char>>int>>long>>float>>double
byte>>short>>int>>long>>float>>double
public class Boolean_txt {
public static void main(String [] args) {
byte b1 = 1;
byte b2 = 2;
short s1 = 1;
int s2 = b1 + b2; //可以,b1+b2在运算时,就变成了int类型
short s2 = b1+s1; // 不可以,b1+s1 在运算时,就变成了int类型,但int转short规则上不行
byte b3 = b1+b2; // 不可以,b1+b2 在运算时,就变成了int类型,但int转bytet规则上不行
boolean pass = ture;
int num = pass;//不可以,boolean不参与转换
short s1 = 1;
byte b1 = 1;
int num = 3;
double m = 1.1;
double add = s1 + b1 + 3 + 1.1;//因为运算时最大的类型时double,所以运算结果是double类型
int add = s1 + b1 + 3 + 1.1;//不可以,因为运算时最大的类型时double,所以运算结果是double类型
可以强转,但结果的精度会失去
// char类型可以保存int的常量值,但不能保存int的变量值,需要强转
char m = 24; //可以存
char h = m; //错误的,除非强转 char h= (char)m
int x =(int)5.6;
System.out.println(x);
}
}
String型和基本类型的转换
基本数据类型 转换成 String型,只需要将变量+""
String型 转换成 基本数据类型,需要通过基本类型的包装类
调用parsexx方法
public class newm {
public static void main(String [] args) {
int n1 = 100;
float n2 = 1.1F;
double n3 =5.6;
String m1= n1 + "";//将整型n1转换为String型
String m2= n2 + "";//此时m2已是字符串类型
String m3= n3 + "";
System.out.println(m1);
System.out.println(m2);
System.out.println(m3);
System.out.println(n2+n3);//结果是double型6.7000000238418576
System.out.println(m2+m3+"\n");//结果是字符串String型1.15.6
String ss = "123";
int num1 = Integer.parseInt(ss); //将String型 ss转换为整型
double num2 = Double.parseDouble (ss);
float num3 = Float.parseFloat(ss);
double num4 = Double.parseDouble(ss);
byte num5 =Byte.parseByte(ss);
System.out.println(num1+" "+num2+" "+num3+" "+num4+" "+num5);
System.out.println(ss.charAt(0));//将ss字符串取其第一个字符输出为char类型
}
}
第三章_算术运算符(ArithmeticOperator)
基本运算符 +,-,*,/
高级运算符 取模%,自增++,自减--,拼接符+
自增&自减的用法
前++:先增后取值;后++:先取值后自增
前–:先自减后取值;后–:先取值后自减
取模(%) 公式 a%b=a - a / b * b
System.out.println( 10 % 3 ); result = 1
System.out.println( -10 % 3 ); result = -1
System.out.println( 10 % -3 ); result = 1
int i = 10;
//需要注意i++,++I作为单独是相等的
i++; result是11
++I; result是11
//而++i,i++作为运算就得遵守规则。
// 前++先增后取值,后++先取值后增
int j = 8;
int k = ++j; // j=j+1; k=j; j=9,k=9
int k = j++; // k=j; j=j+1; k=8,j=9
----------------------------------
注意
int i=1;
i=i++;
System.out.println( i); result =1
因为 i++在执行时,会创建个临时变量temp,然后将最左边的i赋给temp
temp=i; 然后执行i=i+1; 然后释放变量temp,将temp再还给i,i=temp;
小练习
int i =1 ;
i = ++i; // 嗯,知道,i=i+1;temp=i;i=temp;
System.out.println( i); result =2
----------------------------------
练习
需求: 假如天数60,求还有多少星期零几天?
分析》 星期:days / 7,剩余天数 days % 7
实现:
public class text {
public static void main (String [] args) {
int days=60;
int Week = days / 7;
int day = days % 7;
System.out.println( "还有"Week+"星期"+"剩"+day+"天");
}
}