个人兴趣(大学生):喜欢专研 学习 数据结构 高数 线性代数 编程原理
计算机网络 操作系统 C/C++ 英语
人工智能核心(高数、概率论等)
(这些基础决定的是高度)
找工作:不用研究基础了,偏向应用-速成
想通过java改变命运:建议 学历至少大专 大学 年龄 (建议30岁以下)
下一代程序员: 学习控制人工智能了
{ 劝退 }
想做游戏:java干不了 c、c++ java做网站的(B/S端比较多) app后台等
黑客/游戏脚本:不要学java了。。。熟悉计算机网络、操作系统等等。。。
计算机:CPU跟硬件有关,java主要跟(内存和硬盘)关系大
计算机 其实就是 开关电瓶 01010110二进制
ASCII 美国的
gbk 中国的
每个国家都有一套编码表 字符集
ASCII(8bit美国的) Unicode(16bit国际化的)
Unicode 国际统一标准 UTF-8(写程序设置成UTF-8)
Unicode是ASCII表的扩展,并不会冲突
----------------------------------------------------------
java环境配置
java8 1.8
jdk:java development kit java开发环境
jre:java runtime environment java运行环境
进入jdk的bin目录 才能 执行java:运行java程序 javac:编译java
环境变量配置后:java编译后 编程class字节码文件,然后进行运行java程序
-------------------------------------------------------------------------
java基础知识
一.
基本数值类型 6种
byte 1个字节 8bit 2的7次方 -128~127
short 2个字节 16bit
int 4个字节 32bit -2的31次方
long 8个字节 64bit
float 32bit
double 64bit 双精度小数
二
字符类型
char 2个字节 16bit
ASCII(8bit美国的) Unicode(16bit国际化的):utf-8是它的实现方式
char b='A';
System.out.println(b);//A
System.out.println(b==65);//true
System.out.println((int)b);//65
Unicode编码范围(16bit) u0000~uFFFF
char y='u0041';
System.out.println(y);//A即65
三
字符串String
String str = "欢迎";
String str2 = "u6b22u8fce";
System.out.println(str2);//欢迎
str.substring(1);
str.substring(1,4);//截取字符串 包头不包尾
str==str2;//比较两字符串的内存地址 并不是比较内容
str.compareTo(str2);//字典顺序 相等时返回=0,str>str2时返回>0,str<str2时返回<0,
二
unix时间戳 1970-1-1 unix系统发布时间
long time = System.currentTimeMillis();
int a=10;
int b=10*a++或者10*(a++); //b=100
int c=10*++a//b=110
double t= 3/2;
System.out.println(t);//1.0
double t2= (double) 3/2;
System.out.println(t2);//1.5
三
Math工具类
随机数生成:Math.random() 随机生成[0.0~1.0)之间小数
Math.random()*50 随机生成0~50之间小数
获取整数: (int)(Math.random()*50) 带括号强转为int类型,
不带括号获得的随机数基本是0
四
堆栈的概念(java虚拟机)
栈的特点:后进先出
(基本的数据类型都是)值传递:传递的只是值,变量没变
引用传递:传递的是内存地址,会改变变量的值
五
方法的重载:方法名一样 参数列表不一样(类型和数量),在同一个类种不会报错
作用域:方法的堆栈
六
最基础的查找:线性查找/二分查找(效率更高)
二分查找:先把数组排序,由小到大 然后找中间轴元素 比较大小 依次查找中间轴 来进行查找.
最基础的排序数组:选择排序/冒泡排序 ----其他,快速排序(递归)/希尔排序
七/
this 是指当前对象 static 是类的属性,存在static时可能对象还不存在,所以不能放在静态当中
八
基本数据类型 包装类
intInteger
double Double
charCharacter
无限大(以字符串模式存储,故可存较大数)
BigInteger big1.multiply(big2)
BigDecimal divide若除不尽,要指定小数位数
StringBuffer 线程安全 效率较低
StringBuilder 线程不安全 效率高 同时操作添加的时候append容易造成混乱
Java是一门面向对象编程语言,Java语言具有封装、继承、多态三个特性,这三个特征又使得Java语言比其他编程语言的功能更加强大强大、用起来更加简单。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程
初级阶段:
1.JAVA基础语法、 集合类、 线程、 IO操作;这些掌握了 基础算是过关了, IO操作有点麻烦 被搞晕没关系 知道什么时候用 用到了 再去搜索就行
2.其次 web部分 servlet jsp session cookie mysql数据库 都要知道怎么操作怎么用 前端页面的话 html不必太深 能看懂就行 js或者jquery会操作dom能够把后台数据放到合适的位置就可以 现在前段js技术五花八门。学到这个阶段,你需要知道一个请求从页面或者移动端发起之后 经历什么样的过程再返回去的 知道ajax是什么 会发起异步请求到后台 。
3.框架方面 别学struts hibernate了 很少有项目用了 学springmvc spring mybatis就可以 ,不必清楚实现原理 会搭框架 搞一个增删改查出来就行了
中级阶段:
1.你会框架的CRUD之后 你可以看一下nginx 可以尝试做一个负载均衡玩一下,这个不需要你写代码 只需要配置下 但是能有效的提高简历质量
2.你还可以学习下MQ 就从activeMQ开始 尝试怎么用对接把任务异步出去
3.你还可以试试redis 做个简单的数据缓存或者会话缓存,这时候你再去找工作就立马不一样了,学这三个可能也就用两三周不到,但是你的简历会体现出一个中级程序员的水平。
那说到中级技术水平 个人觉得应该掌握的技术有 负载均衡 apache http 或者nginx均可, 队列 ActiveMQ 就行(这个是java语言写的比较贴近java ),缓存 redis就行 memcache用的越来越少了感觉,还有精力的话,可以看一下mogoDB 做个简单的demo存个json进去玩一玩。 然后你的简历又丰富起来了………你工作里肯定用不到那么多,但是你就往你简历里写,糅合进你的项目里去,反正你知道什么场景用这些就行,问不出来的。 初级和中级界限很模糊的,只是一些中间件的使用而已。
http://www.toutiao.com/i6421696877745406465/?tt_from=weixin&utm_campaign=client_share&from=singlemessage&app=news_article&utm_source=weixin&isappinstalled=1&iid=10336304599&utm_medium=toutiao_ios&wxshare_count=2&pbid=1496298920
我整理一下,大概就是这些难点,先整理一个大纲
-
api
-
多线程
-
面相对像的思想 Java最重要的知识点,没有之一,无数人卡在这一关过不去
-
java类库繁杂的串联
-
集合框架
-
反射
-
hello world
-
servlet,jdbc,数据库,tomcat
-
前端后台知识点太多
-
java的高级语言特性
-
算法
-
OOA,OOD
-
编程实践最难
-
动态代理
-
GUI
-
三大特性 老生常谈之事,Java的第一个知识点
-
jdk的源码
-
数据加密,处理并发
-
xml
-
差点忘了一个最难的,传说中的“Hello world”
第一部分 java-数据类型
java是跨平台的,JVM(java虚拟机根据系统改变)不能跨平台,但是jvm保证了java语言的跨平台
Java中,若在变量声明时没有给变量赋初值,则会给变量赋默认值,如下图:
一、数据类型的转换
1.数据溢出(最大、最小值)
2.强制类型转化(解决数据溢出的问题)
二、字符类型(char 两个字节)
计算机处理字符类型时,是把字符看成不同的整数看待。所有的文字、数值都会解析成0与1表示的二进制让计算机读取;
由于0与1难以理解,所以就产生了各种编码来代表某个字符,如ASCII、Unicode。
Java使用的就是Unicode字符码系统,它为每个字符制订了一个唯一的数值,来解决编码系统可能会产生的相互冲突的情形而导致数据跨平台发生的错误。
1.转义字符
2.char与String区别
String与char类型的相互转化
三、数据类型转换
1.自动类型转换
(1)short、byte可以自动转换为int。int可以自动转换为float、double
(2)任何类型的数据都向String转型
2.强制类型转换
第二部分 Java的面向对象思想如何树立
要知道Java面向对象的思想,那么我感觉应该对比着来学习。
首先我们要区分一下“基于对象”和“面向对象”的区别。
基于对象,通常指的是对数据的封装,以及提供一组方法对封装过的数据操作。
而面向对象呢,则在基于对象的基础上增加了多态性。多态就是可以用统一的方法对不同的对象进行同样的操作。当然,这些对象不能完全不同,而需要有一些共性,只有存在了这些共性才可能用同样的方法去操作它们。就比如A 和 B 在继承关系上都有共同的祖先 R ,那么我们就可以把 A 和 B 都用对待 R 的控制方法去控制它们。
其实这里面向还是有两个概念,面向过程和面向对象,这个可能就会很容易理解了
面向对象是相对面向过程说的。
简单来说,区别就是一个是make a dog bark,一个是a dog barks:
make bark(dog)
dog.bark()
面向对象的做法确实是把属性和功能封装起来,但是其核心是归类和抽象。
把相关的属性和功能集中起来,把可以分离的部分隔绝开来,从而把复杂的业务逻辑切割成互相 之间可以相对独立的部分,降低开发的难度。
所以面向对象绝对不仅仅是弄一个class然后把一堆东西往里面塞,真正重要的是判断需要构造 哪些class,它们之间的关联,以及把什么东西往哪一个里面塞。
还有一个更简单的例子
给你一个任务,你要思考怎么做。
如果你的思维方式是:我先做什么,再做什么……这叫面向过程;
如果思维方式是:我先做一个什么东西来做这件事,再做一个什么东西来做那件事,然后它们怎 么相互配合……这叫面向对象。
再通俗一点就是,面向对象是有个对象会给你做这件事,你只需要调用该对象就能完成这件事。而面向过程却是你得自己做。
第三部分 JAVA 三大特性:封装、继承、多态
1、 封装:该公开的公开,该私有的私有
类的属性:就属私有,类的属性一般私有;
类的方法:该公开的公开,该私有的私有;
类,封装了数据和方法;
方法,封装了实现的过程,接口是参数和返回值;
数据原型类:又叫实体类
1)get/set 方法;对某一个属性只提供get不提供set方法,就是只读的,在类的外部不能修改;
2)提供统一的参数检查,在set上给与检查,判断合法性和安全性;
将属性都私有,并且提供set/get 方法,做成了通用的组件,叫JavaBean;
2、继承:任何父类适用的地方,子类一定适用
单纯的代码复用不需要继承extends: 继承,实际上是对父类的扩展;
生成对象的过程是怎么样的?
1)分配对象空间;
2)给属性赋初值;boolean:false;数值类型:0或0.0; 对象类型:null;
3)调用构造方法;
3、多态:类中多个方法的重载叫多态,父子类中方法的覆盖也叫多态。
多态有两种体现:一个是方法的重装,一个是方法的覆盖
多态有方法的多态和对象的多态(一个对象多种形态)。多态一定要将子类对象当作父类对象来看,
所有的多态可以归结为两个定理:
1).可以把子类对象当作父类对象来看,一旦这样做了,就只能去调用父类中原有定义的属性和方法,也就是子类中扩展的方法或属性就不能调用了。
2).当我们把子类对象当作父类对象来看的时候,如果子类覆盖了父类中的方法,在调用的时候实际调用的是子类覆盖后的方法。
个人兴趣(大学生):喜欢专研 学习 数据结构 高数 线性代数 编程原理 计算机网络 操作系统 C/C++ 英语人工智能核心(高数、概率论等)(这些基础决定的是高度)找工作:不用研究基础了,偏向应用-速成
想通过java改变命运:建议 学历至少大专 大学 年龄 (建议30岁以下)
下一代程序员: 学习控制人工智能了
{ 劝退 }想做游戏:java干不了 c、c++ java做网站的(B/S端比较多) app后台等
黑客/游戏脚本:不要学java了。。。熟悉计算机网络、操作系统等等。。。
计算机:CPU跟硬件有关,java主要跟(内存和硬盘)关系大计算机 其实就是 开关电瓶 01010110二进制
ASCII 美国的gbk 中国的每个国家都有一套编码表 字符集
ASCII(8bit美国的) Unicode(16bit国际化的)Unicode 国际统一标准 UTF-8(写程序设置成UTF-8)Unicode是ASCII表的扩展,并不会冲突
----------------------------------------------------------
java环境配置
java8 1.8jdk:java development kit java开发环境jre:java runtime environment java运行环境
进入jdk的bin目录 才能 执行java:运行java程序 javac:编译java环境变量配置后:java编译后 编程class字节码文件,然后进行运行java程序
-------------------------------------------------------------------------
java基础知识
一.基本数值类型 6种byte 1个字节 8bit 2的7次方 -128~127short 2个字节 16bitint 4个字节 32bit -2的31次方long 8个字节 64bit
float 32bitdouble 64bit 双精度小数
二字符类型char 2个字节 16bit ASCII(8bit美国的) Unicode(16bit国际化的):utf-8是它的实现方式
char b='A';System.out.println(b);//ASystem.out.println(b==65);//trueSystem.out.println((int)b);//65
Unicode编码范围(16bit) u0000~uFFFFchar y='u0041';System.out.println(y);//A即65
三字符串StringString str = "欢迎";String str2 = "u6b22u8fce";System.out.println(str2);//欢迎
str.substring(1);str.substring(1,4);//截取字符串 包头不包尾str==str2;//比较两字符串的内存地址 并不是比较内容str.compareTo(str2);//字典顺序 相等时返回=0,str>str2时返回>0,str<str2时返回<0,
二unix时间戳 1970-1-1 unix系统发布时间 long time = System.currentTimeMillis();
int a=10;int b=10*a++或者10*(a++); //b=100int c=10*++a//b=110
double t= 3/2;System.out.println(t);//1.0double t2= (double) 3/2;System.out.println(t2);//1.5
三Math工具类随机数生成:Math.random() 随机生成[0.0~1.0)之间小数 Math.random()*50 随机生成0~50之间小数 获取整数: (int)(Math.random()*50) 带括号强转为int类型,不带括号获得的随机数基本是0
四堆栈的概念(java虚拟机)栈的特点:后进先出
(基本的数据类型都是)值传递:传递的只是值,变量没变引用传递:传递的是内存地址,会改变变量的值
五方法的重载:方法名一样 参数列表不一样(类型和数量),在同一个类种不会报错
作用域:方法的堆栈
六最基础的查找:线性查找/二分查找(效率更高)
二分查找:先把数组排序,由小到大 然后找中间轴元素 比较大小 依次查找中间轴 来进行查找.最基础的排序数组:选择排序/冒泡排序 ----其他,快速排序(递归)/希尔排序
七/this 是指当前对象 static 是类的属性,存在static时可能对象还不存在,所以不能放在静态当中
八 基本数据类型 包装类intIntegerdouble DoublecharCharacter
无限大(以字符串模式存储,故可存较大数)BigInteger big1.multiply(big2) BigDecimal divide若除不尽,要指定小数位数
StringBuffer 线程安全 效率较低StringBuilder 线程不安全 效率高 同时操作添加的时候append容易造成混乱