1、前言
今年4月底,我做一个决定,辞掉原来的工作,入行计算机软件工程这一行业 。人们常说,转行是一件很困难的事情,需要有翻山越岭不辞万难的决心,而计算机行业更是众多领域里起始点较高的一个,为什么计算机行业看起来薪资较高?我觉得和学习成本(时间与金钱)与行业本身形态有关,学习成本决定了行业的下限,行业发展的形态决定了它的上限。
写博客对我来说是一件新鲜而又不陌生的事情。新鲜在于我是第一次在论坛里发表博客;不陌生则是因为我之前的工作需要做许多总结报告。虽然我很想把各个事情都做的尽善尽终,但是对于一个技术小白来说,万事总是开头难。当然船到桥头自然直,想到以后(应该吧)能有一份长久工作可以喂饱自己,还是心存感激。
这里我将每一星期内学习的内容作一个小的总结。下面,将从java的基础从头开始。
2、学习总结
目录
- 初识java
- java的运行与开发
- 八大基本数据类型
- 运算符
- 分支结构
2.1、初识java
java是一门高级的计算机语言。计算机语言具有高级语言和低级语言之分。而高级语言又主要是相对于汇编语言而言的,它是较接近自然语言和数学公式的编程,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序;
计算机语言里本质上是控制短路与开路的状态,这刚好对应于二进制里的0和1;
java相对于其他高级语言,它最大的特点在于它的跨平台性;
java的编译过程
- 编译期:java源文件经过编译,生成 .class字节码文件
- 运行期:JVM加载.class并运行.class(0和1)
一套java源码可以给多个系统使用
JVM:java虚拟机;
JRE:java最小运行环境,包括了JVM与系统类库;
JDK:java最小开发环境,包括了JRE与开发工具包;
TIPS:JDK开发于SUN公司,后被Oracle公司收购
2.2、java的运行与开发
IDE:集成开发环境,一整套带图形界面的功能强大的工具,常见的有idea和eclipse,现在一般都用idea,是JetBrains公司的,分为社区版(免费的)和终级版(收费的)
- 开发步骤:
- 新建Java项目/工程--------------------------小区
- 新建Java包------------------------------------楼+单元
- 新建Java类------------------------------------房子
package day01; //声明包day01(楼+单元)
public class HelloWorld { //声明类HelloWorld(房子)
//主方法,为程序的入口(大门口),程序的执行从main开始,main结束则程序结束
public static void main(String[] args) {
//输出hello world
//1)严格区分大小写
//2)所有符号都必须是英文模式的
//3)每句话必须以分号结尾
System.out.println("hello world"); //双引号中的原样输出
System.out.println("这是一段打印输出语句");
}
}
注释:解释性文本(计算机是不执行的)
-单行注释:// 文本
- 多行注释:/* 文本 */
- 文档注释:/** 文本 */
2.3、八大数据类型
所有数据在计算机里都占有内存,在java里为一个变量(数据)申明(创造)一个标识符(名字),就给这个数据开拓了一个内存空间,用于存放这个数据。而java是一个强数据类型的语言,它所有的数据都有分类,想要声明一个数据,必须有数据类型符,然后给它初始化。初始化一般是:把数字直接输入,该输入的数字称为直接量。
变量的作用域/范围:从变量的声明开始,到包含它最近的大括号结束
标识符:标识符可以简单的理解成一个名字。在Java中,我们需要给代码中的很多元素起名,包括类名、方法名、字段名、变量名等等。我们给对应元素起的名称就被称为标识符,一个正确的标识符需要遵循以下规则:
1、严格区分大小写;
2、不能以数字开头;
3、只能以字母、数字、下划线(_)和美元符($)来命名;
4、不能有关键字;
5、建议只用英文,且见名知义;
变量名除了以上规则外,它的写作方式也有规定:
命名法 | 规则 | 使用范围 |
小驼峰命名法 | 首字母开头小写,后面字母开头大写 | 变量名、方法名(后面会学到) |
大驼峰命名法(帕斯卡命名法) | 首字母开头大写,后面字母开头也大写 | 类名(后面会学到) |
内存空间换算关系:1G=1024M(兆) 1M=1024KB(千字节) 1KB=1024B(字节) 1B=8bit(位)
1、整型
整型可以声明整数,它又分为字节型(byte)、短整型(short)、整型(int)、长整型(long);
字节型(byte):它有一个字节,范围为-128到127,即-2^7~2^7-1;
短整型(short):它有两个字节,单位为-32768到32767,即-2^15~2^15-1;
整型(int):它有四个字节,范围为-21亿多到21亿多,即 -2^31~2^31-1;
长整型(long):它有八个字节,范围为很大,在-2^63~2^63-1,当直接量超过整型时,可以在直接量后面加上字母L或l(不推荐小写,容易与1混淆),这样就能转换成长整型直接量;
整数的直接量默认为int型,但是不能超出范围,否则会编译错误;
运算时若超出范围,结果会溢出,溢出不会报错,但要避免;
两个整数相除,结果还是整数,小数位舍弃;
2、浮点型
浮点型可以声明小数,它又分为单精度浮点型(float)与双精度浮点型(double);
单精度浮点型:float,有四个字节;
双精度浮点型:double,有八个字节,在直接量后面加上F或f,可以转成float型;
浮点型数据参与运算时,会出现舍入误差,需要精确数字时不用浮点型;
3、布尔型
布尔型(boolean),只有一个字节,只能取值为true和false;
4、字符型
字符型(char),有两个字节,它采用的是Unicode的编码格式,一个字符对应一个码,它本质上是一个int型(0~65535),例如:'a'----97 ‘A'----65 '0'----48。字符型必须放在单引号中,且只能有一个,如果是特殊字符,如 单引号、反斜杠等,需要转义字符 \ 来转义;
5、类型之间的转换
基本数据类型从小到大依次为:byte--short(char)--int--long--float--double;
类型的转换有两种方式:
1、自动/隐式类型转换:从小到大,自动转换;
2、强制类型转换:大到小,语法:(目标类型)变量;注意强制转换可能会丢失精度或者溢出;
重点:byte、short、char类型参与运算时,系统一律转换为int型
public class Test {
public static void main(String[] args) {
int number = 5;
short number01 = 125;
byte number02 = 100;
//short add = number01+number02; //编译错误,这里系统会自动转换成int型,int型不会自动转换成short型
short add = (short)(number01+number02);
}
}
2.4、运算符
1、算数运算符
加法运算:+、减法运算:-、乘法运算:*、除法运算:/、取余运算:%、
自增1:++,即x=x+1,等价于x++(++x)
自减1: --,即x=x-1,等价于x--(--x);
自增自减在单独使用时,x++(--) 等价于++(--)x;
但是在被使用时,x++的值为x,++x的值为x+1;
int a = 14;
int b = a++;
int c = 100;
int d = ++c;
System.out.println(b); //14
System.out.println(d); //101
2、关系运算符
大于>,小于<,大于或等于>=,小于或等于<=,等于==,不等于!=;
关系运算的结果为boolean型,关系成立则为true,关系不成立则为false;
3、逻辑运算符
&&:短路与(并且),两边都为真则为真,见false则false ---若第1个条件为false,则发生短路(后面的不执行了)
||:短路或(或者),有真则为真,见true则true ---若第1个条件为true,则发生短路(后面的不执行了)
int a = 185;
int b = 36;
int c = 49;
boolean cut1 = a<b && b++<c;
boolean cut2 = a>b || c++<b;
System.out.println("演示短路"+cut1); //false
System.out.println("演示短路"+b); //36
System.out.println("演示短路"+cut2); //true
System.out.println("演示短路"+c); //49
!:逻辑非(取反),非真则假,非假则真
boolean b2 = !(a>b); //!的优先级高,所以需要将a>b括起来
System.out.println(b2); //!false=true
System.out.println(!(a<b)); //!true=false
4、赋值运算符
赋值运算符分为简单赋值运算符与拓展赋值运算符;
简单赋值运算符:=
拓展赋值运算符:+=、-=、*=、/=、%=
拓展赋值运算符在系统里会自动强转类型;
short s = 5;
//s = s+10; //编译错误,需强转,改为:s=(short)(s+10);
s += 10; //相当于: s=(short)(s+10);
5、字符串连接符
就是 + 这个符号,它的规则是两边是数字,则做加法运算,若有一边出现了字符串,结果都会变成字符串类型;
int age = 18;
String name = "yjswep"; //String是字符串数据类型
System.out.println("大家好,我叫"+name); //大家好,我叫yjswep
System.out.println("大家好,我叫"+name+",今年"+age+"岁了"); //大家好,我叫yjswep,今年18岁了
System.out.println(10+20+""+30); //3030------String
System.out.println(""+10+20+30); //102030----String
System.out.println(10+20+30+""); //60--------String
6、三目运算符
这个运算符可以帮你做判断,并输出你想要的数据;
语法结构: boolean?数1:数2;
执行过程:
- 整个表达式是有值的,它的值要么是?号后的数1,要么是:号后的数2
- 计算boolean的值:
- 若为true,则整个表达式的值为?号后的数1
- 若为false,则整个表达式的值为:号后的数2
int num = 5;
int flag = num>0?1:-1;
System.out.println(flag); //1
int a=8,b=55;
int max = a>b?a:b;
System.out.println("max="+max);
2.5分支结构
一种条件执行语句,语法结构有三种:单分支结构、双分支结构和多分支结构;
单分支结构:
if(boolean){
语句块----------有条件执行的语句
}
执行过程:
判断boolean的值: 若为true,则执行语句块(if整个结束)
若为false,则if直接结束
单分支结构的特点在于该语句块不一定会被执行,因为布尔值只有一个,如果布尔值不相等,语句块就不会执行;
双分支结构:
if(boolean){
语句块1
}else{
语句块2
}
执行过程:
判断boolean的值:若为true,则执行语句块1(整个结束);
若为false,则执行语句块2(整个结束);
双分支结构的特点在于:一定且只能执行两个语句块的其中一个;
例题(判断闰年):
// 2. 声明一个整型变量year并存储年份,判断其是平年还是闰年,
若是闰年则输出"某某某年是闰年",否则输出"某某某年是平年"。
// 闰年的判断公式:
// 1)4年一闰,百年不闰,就是:能被4整除,并且,不能被100整除
// 或者
// 2)400年再闰,就是:能被400整除
int year = 2020;//2020是闰年
if(year%4==0 && year%100!=0 || year%400==0){
System.out.println("该"+year+"年是闰年");
}else{
System.out.println("该"+year+"年是平年");
}