The 22-year-old becomes the Old Lady's second major signing of the summer, following Australia international Mathew Leckie's recent move from relegated Ingolstadt.
"For me, Hertha are one of the biggest clubs in the Bundesliga, and I'm delighted the transfer has gone through," Selke said. "In the coming years, I want to do my bit to continue along the path they're treading here and establish Hertha's place in the upper echelons of the Bundesliga."
A prolific striker at youth level for Hoffenheim and then Werder Bremen, Selke made his Bundesliga debut in November 2013. He made just three first-team appearances for Werder in 2013/14, but had become a regular in the senior side by the end of the following campaign, scoring nine goals in 30 Bundesliga appearances.
He dropped down a tier to join Leipzig in summer 2015, and went on to score ten times in Bundesliga 2 as the Red Bulls gained promotion to the top tier for the first time.
Despite representing Germany at every youth level and playing his part in his country's silver-medal winning efforts at the 2016 summer Olympic games, Selke found first-team opportunities at a premium in 2016/17. He made 20 appearances all told, albeit only four starts, and registered four goals - two of which came at Hertha's Olympiastadion on Matchday 32.
Watch: Selke scored a brace against new employers Hertha on Matchday 32
"We're really happy to have acquired another talented Germany international," said Hertha sporting director Michael Preetz. "He's an important addition to our attacking ranks, especially with the Bundesliga and European commitments that lie ahead. We still think Davie Selke has the potential to improve. He's already proved he qualities in Bremen and Leipzig, as well as for the junior national teams."
Selke will wear his favoured No.27 shirt at Hertha.